Python大讲堂
编码必备
文
件
处
理
内容概要:
如何用文件os模块
如何用递归函数
如何使用字典列表
说明:
本文章资料和或等参考摘自XINXIN的实战实例
以下图片为代码,#后是注释
每一段程序分析不可作为源码使用,图片可以,或则回复下载也可以
01
解决问题
① 实际背景:
今天我被要求做一件很机械的事情,统计一个文件夹内所有的文件名称和其大小输入excel表,统计总容量,我费了很多心思写了文件名提取的VBA代码进行忽略了一个问题,多层文件夹嵌套的文件难以提取,于是就想到了python来解决这个问题。(PS:虽然因为时间关系还是先手动完工交给老大了)
问题1:我们要统计该目录下有多少个文件并显示(包含子目录)
问题2:该目录总共的大小可以按M,也可以按K显示
问题3:该目录下最大的文件和最小的文件,以及对应的大小
② 文件目录:
根目录为:C:\Users\dz\Desktop\data
③ 程序分析:
1).因为要列出最大/最小的文件名字和大小,我们用字典的统计和输出
2).把目录下的全部文件和目录列出
A.若是文件就统计大小
B.若是子文件夹,就继续寻找文件,然后不断重复刚才的过程,用递归
3).最后就是显示,要按MB,KB显示,需要我们定义一个扩展的函数入参结构
02
turtle作图
① 获得文件大小和名字:
②列出所有文件(包含子文件夹内文件):
③统计大小,对应单位计算:
ifsize_KB: #KB显示
returnstr(round(sum(files)/1024,2))+'k'#精确到后两位
④主函数调用:
mypath=r'C:\Users\dz\Desktop\选修课html+css'
#防止转义使用r
all_files_size=displayFilesSize(files_dict.values(),size_MB=True)
#打印文件个数大小
iflen(files_dict)>1:
new_files_dict=zip(files_dict.values(),files_dict.keys())
#print (max(new_files_dict))
print(min(new_files_dict))
iflen(files_dict)>1:
new_files_dict=zip(files_dict.values(),files_dict.keys())
print(max(new_files_dict))
#print (min(new_files_dict))
#如果是python2.7版本则使用一段if取消注释即可取
#python3.6版本在使用min max之后字典内数据就清空了
#所以重新插入一份
finally 最终效果:
公众号回复1834 获得源码
领取专属 10元无门槛券
私享最新 技术干货