猫史档案馆


【生命不息,折腾不止】文件大小分析

用户:lsk666666lsk666666查看: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,然后运行的效果是这样的:

center_image

center_image


回复

上一页1 页 / 共 1下一页
lsk666666lsk666666

点赞楼~~~~~~~~~~~~~~

emotion_编程猫_谢谢老板

点赞0


评论


lsk666666lsk666666

对了,如果你是一个密集恐惧症患者,请不要用这个程序分析文件特别多的文件夹

center_image

center_image

点赞0


评论