学生成绩管理系统+打包

文件管理:D:\hyt\python\pytorch_graduate\file_management

成绩管理:D:\hyt\python\pytorch_graduate\stusystem

打包:D:\hyt\python\pytorch_graduate\package_test

学生成绩管理系统

0.基础原理

在这里插入图片描述
加一个 #encoding=gbk可以改变文件的编码格式吧,默认是UTF-8
不同的编码格式决定占的内存大小
在这里插入图片描述
先进先出
在这里插入图片描述
读写操作,针对内存而言。从内存往外出是写,从外面往里入是读。Open的是文件在磁盘上的映射。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.文件管理

1.1 文件读取

file = open('a.txt', 'r') # 磁盘中创建s了文件的一个对象
print(file.readlines())  # 结果是一个列表  '中国\n', '美丽']
file.close()

1.2 写文件

file = open('b.txt', 'w') # 磁盘中创建s了文件的一个对象
file.write('python')
file.close()

1.3 文件追加

file = open('b.txt', 'a') # 如果有这个文件,在后面添加文件
file.write('china')
file.close()

file = open('c.txt', 'a') # 如果没有这个文件就创建这个文件并在后面添加内容
file.write('China')
file.close()

1.4

src_file = open('021.jpg','rb')  # 源文件
target_file = open('copy021.jpg','wb')
target_file.write(src_file.read())       # 边读边写
src_file.close()
target_file.close()

1.5 读取文件具体内容

file = open('a.txt','r')
print('------读取全部内容-----')
a = file.read()
print(a)
print('------读取一行数据-----')
b = file.readline()
print(b)
print('------读取多行数据-----')
b = file.readlines()
print(b)

1.6 写入列表

file = open('d.txt','a')
list = ['java', 'go', 'python']
file.writelines(list)  # 写入列表
file.write('hyt')
file.close()

1.7 关闭文件
文件打开都需要关闭,进行资源的回收

file = open('e.txt','a')
file.write('hello')
file.flush()
file.write('world')
file.close()

# file = open('e.txt','a')
# file.write('hello')
# file.close()
# file.write('world')   这样写会报错,flush不关闭管道,close关闭了管道
# file.flush()

1.8 with

with open('a.txt','r') as file:
    print(file.read())           # 不需要手动关闭,离开with语句时会自动关闭资源

1.9 上下文管理器MyContentMgr

class MyContentMgr(object):
    def __enter__(self):
        print('enter方法被调用执行了')
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        print('exit方法被调用执行了')
    def show(self):
        print('show方法被调用执行了')

with MyContentMgr() as file:   # 相当于file = MyConterMgr()
    file.show()               # 执行完毕自动调用exit方法关闭文件
    # 即使产生异常也调用exit方法

1.10 边读边写


with open('021.jpg','rb') as src_file:
    with open('copy2.jpg','wb') as target_file:
        target_file.write(src_file.read())

1.11 创建目录

import os
print(os.getcwd())  # 输出当前操作路径

lst = os.listdir('../file_management')  # 把所有的目录和文件信息进行输出
# ['021.jpg', 'a.txt', 'b.txt', 'c.txt', 'copy021.jpg', 'copy2.jpg', 'd.txt', 'demo_01.py', 'demo_02.py', 'demo_03.py', 'demo_04.py', 'demo_05.py', 'demo_06.py', 'demo_07.py', 'demo_08.py', 'demo_09.py', 'demo_10.py', 'demo_11.py', 'demo_16.py', 'e.txt', 'python_15.py', '__init__.py']
print(lst)

# os.mkdir('newdir')  # 创建目录(文件夹)
# os.makedirs('a/b/c')  # 创建多级目录
# os.rmdir('newdir')    # 删除目录

os.chdir('path')  #将path设置为当前工作目录


import os.path
print(os.path.abspath('demo_17.py'))   # 获取文件的绝对路径
            # D:\hyt\python\project_exerise\file_management\demo_17.py
print(os.path.exists('demo111.py'),os.path.exists('demo_17.py'))  # False True 判断文件或者目录是否存在

print(os.path.join('D:\\python','demo_16.py'))  # 路径拼接
           # D:\python\demo_16.py

print(os.path.split('D:\\python\\demo.py')) #将文件路径和名字进行拆分
         # ('D:\\python', 'demo.py')
print(os.path.splitext('demo.py'))  #将文件名和后缀名进行拆分
          # ('demo', '.py')

print(os.path.basename('E:\\python\\demo.py'))   # demo.py  提取文件名
print(os.path.dirname('E:\\python\\demo.py'))   # E:\python  把路径提取出来
print(os.path.isdir('E:\\python\\demo.py'))    # False 判断是不是目录

1.12 列出指定路径下所有Py文件

import os
path = os.getcwd()
lst = os.listdir(path)
for filename in lst:
    if filename.endswith('.py'):
        print(filename)

1.13 遍历当前目录下的文件和目录下文件的所有文件

import os
path = os.getcwd()
lst_files = os.walk(path)
# print(lst_files)   # <generator object walk at 0x0000021896D1AC10>  是一个迭代器对象
# 迭代器返回的是元组,包含的是目录下的所有路径

for dirpath,dirname,filename in lst_files:
    print('1:  ',dirpath)  # 路径
    print('2:  ',dirname)  # 路径下的文件夹
    print('3:  ',filename) # 路径下的文件
    print('-----------------------')   # 如果有文件夹再将路径/文件夹作为path,一步一步地遍历
    # for dir in dirname:
    #     print(os.path.join(dirpath,dir))
    #
    # print('--------------------')
    # for file in filename:
    #     print(os.path.join(dirpath,file))

2 学生管理系统

Tk打包

1.基础原理

参考 :https://blog.csdn.net/weixin_43765314/article/details/90300196?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162244980816780262533178%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162244980816780262533178&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-7-90300196.first_rank_v2_pc_rank_v29&utm_term=Tkinter%E6%89%93%E5%8C%85&spm=1018.2226.3001.4187

2.打包过程

2.1 生成 xx.spec 文件

pyi-makespec xxx.py 

2.2 修改 .spec文件,这一步对于打包txt,png等多种文件的很有用
参考:https://blog.csdn.net/weixin_41870706/article/details/101780731?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162253775116780264028106%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162253775116780264028106&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-2-101780731.first_rank_v2_pc_rank_v29&utm_term=pyinstaller+txt%E6%89%93%E5%8C%85%E6%88%90exe+&spm=1018.2226.3001.4187
在这里插入图片描述

2.3 运行

pyinstaller -F xx.spec

2.3 遇到的问题
参考:
1.https://blog.csdn.net/zuimengliu/article/details/78912919?ops_request_misc=&request_id=&biz_id=102&utm_term=pyinstaller%E6%89%93%E5%8C%85%E5%90%8E%E9%97%AA%E9%80%80&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-5-.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187
2.https://blog.csdn.net/MemoryD/article/details/83147300?ops_request_misc=&request_id=&biz_id=102&utm_term=pyinstaller%20%E6%89%93%E5%8C%85%20png&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-6-.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187

  1. 拒绝打开某个txt或者png文件
    因为在.spec里面生成的txt文件是 .\xx.txt形式,打包时读取不了文件夹,如果采用 ‘.’ 形式就可以直接读取。
  2. exe文件闪退、报错、移植到其他电脑运行不了
    打开小窗口,cd到exe文件所在目录,然后运行exe文件,看小黑窗报什么错,就改什么错
  3. 移植到其他电脑上时报错寻找不到python.dll文件
    这是因为我电脑使用的是anaconda环境,这里需要重新创建一个虚拟环境,然后再打包就不会出错。因为anaconda虚拟环境会少打包一些包。
  4. 因为之前拒绝读取文件,不知道是什么错误,所以想要把png文件改称python,这也是一种方法,实现方法在参考一里面。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值