1.项目要求
编写一个程序,遍历一个目录树,查找特别大的文件或文件夹,比如说超过100M的文件,将这些文件的绝对路径打印在屏幕上。
2.编程步骤
- 遍历目录树:os.walk()
- 判断文件大小:os.path.getsize()
- 打印出绝对路径:pprint.pprint()
3.补充知识
- 1Byte = 8b
- 1KB = 1024Byte
- 1MB = 1024KB
- 1GB = 1024MB
- 1TB = 1024GB
由于os.path.getsize()函数返回的是字节数,所以需要将文件大小换算成字节数来比较。因此,文件大于100M等同于文件大于1024*1024*100字节
4.代码演示
import os,shutil,pprint
#参数是绝对路径
def copyFile(folder):
allFile = []
for foldername,subfolder,filenames in os.walk(folder):
for filname in filenames:
#合成绝对路径
absfilename = os.path.join(foldername,filname)
print('Calculating %s......'%(absfilename))
#判断文件是否大于100M,是则将路径添加至列表
if os.path.getsize(absfilename) > 1024*1024*100:
allFile.append(absfilename)
#打印路径
print('文件大于100M的是:')
pprint.pprint(allFile)
copyFile('c:\\Windows')