用户:
lsk666666查看:0 回复:2 评论:0 创建时间:2020-11-01T14:46:12
帮助你找到文件夹中最大的那几个文件
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import os
logFile = open('file.log','w')
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
def log(str,print_only=False):
if not print_only:
try:
logFile.write(str)
logFile.write("\r\n")
except:
pass
print(str)
def getFileSizes(targetDir):
files = get_all(targetDir)
result = {}
for file in files:
size = doGetFileSize(file)
if size < 1.0:
continue
log("File: "+file+" Size:"+str(size))
result[file] = size
return result
def get_all(path): # 递归获取指定目录下所有文件的绝对路径(非目录)
result = []
dir_list = os.listdir(path)
for i in dir_list:
try:
sub_dir = os.path.join(path, i)
if os.path.isdir(sub_dir):
result.extend(get_all(sub_dir))
else: # 此时sub_dir是文件的绝对路径
log(sub_dir,print_only=True)
result.append(sub_dir)
except:
pass
return result
def doGetFileSize(filePath):
fsize = os.path.getsize(filePath)
fsize = fsize/float(1024 * 1024)
return round(fsize, 2)
def drawResult(sizes,path):
labels = []
x = []
for label in sizes:
labels.append(label)
x.append(sizes[label])
fig = plt.figure()
plt.pie(x,labels=labels,autopct='%1.2f%%')
plt.title("File Sizes Of Directory "+path)
plt.show()
def main():
dir = input("Target Dir: ")
sizes = getFileSizes(dir)
drawResult(sizes,dir)
if __name__ == "__main__":
main()
logFile.close()
需要matplotlib,然后运行的效果是这样的:

