文章目录
文件管理: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.youkuaiyun.com/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.youkuaiyun.com/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.youkuaiyun.com/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.youkuaiyun.com/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
- 拒绝打开某个txt或者png文件
因为在.spec里面生成的txt文件是 .\xx.txt形式,打包时读取不了文件夹,如果采用 ‘.’ 形式就可以直接读取。 - exe文件闪退、报错、移植到其他电脑运行不了
打开小窗口,cd到exe文件所在目录,然后运行exe文件,看小黑窗报什么错,就改什么错 - 移植到其他电脑上时报错寻找不到python.dll文件
这是因为我电脑使用的是anaconda环境,这里需要重新创建一个虚拟环境,然后再打包就不会出错。因为anaconda虚拟环境会少打包一些包。 - 因为之前拒绝读取文件,不知道是什么错误,所以想要把png文件改称python,这也是一种方法,实现方法在参考一里面。