很多时候,查看一个文件夹下的每个文件大小可以轻易的做的到,因为文件后面就是文件尺寸,但是如果需要查看一个文件夹下面所有的文件夹对应的尺寸,就发现需要把鼠标放到对应的文件夹上,稍等片刻才会出结果。
有时候,我们需要查看几十个甚至于上百个文件夹,找出包含文件最多,空间占用最大的那个,就比较麻烦了。这段代码是我以前的代码,可以按大小排序输出文件夹大小到txt文件,供使用的方便。
格式化当时花了很长时间,最后发现使用“YaHei.Consolas”字体可以解决,对齐后输出结果看起来还算舒服。
上代码:
进口操作系统 进口日期时间 def get_folder_size(路径): folder_size=0 如果不是os.path.exists(路径): 返回folder_size 如果os.path.isfile(路径): folder_size=os.path.getsize(路径) 返回folder_size 试一试: 如果os.path.isdir(路径): directory_lists os.scandir(路径): 在directory_lists directory_list: 如果directory_list.is_dir (): sub_folder_size=get_folder_size (directory_list.path) #递归获取大小 folder_size +=sub_folder_size elif directory_list.is_file (): file_size=os.path.getsize (directory_list.path) folder_size +=file_size 返回folder_size 除了: 通过 #以下主要是为了格式化输出 def get_file_length (file_name):=字符列表(file_name) ascii_length=0 utf8_length=0 字符的字符: 如果奥德(字符)& lt;128: ascii_length +=1 其他: utf8_length +=2 返回ascii_length + utf8_length def主要(basedir): dirs os.scandir (basedir): directory_size=[] 对于dir dirs: 试一试: 如果不是dir.is_file (): dirsize=圆(get_folder_size (dir.path)/1000000) #返回文件的大小(以Mb为单位) resformat=[dir.name dirsize] directory_size.append (resformat) 除了: 通过 结果=排序(directory_size关键=λx: x[1],反向=True) #返回命令列表的大小 结果=[[我[0],”文件夹大小:“+ str(我[1])+ ' m ']我的结果) 张开(basedir +操作系统。9 + datetime.date.today () .isoformat () +”。txt”、“+”), f: 导致的结果: #按照50的宽度格式化输出结果 len1=50 - get_file_length(结果[0])+ len(结果[0]) len2=25 - get_file_length(结果[1])+ len(结果[1]) f.writelines (' {: & lt; s {len1}}{:祝辞{len2}年代}\ n”。格式(结果[0],[1]结果,len1=len1 len2=len2)) 打印('结果是成功地与日期作为文件名保存在目录。) if __name__==癬_main__”: basedir=输入(“请输入您想知道的目录大小:") 主要(basedir)
如果输入相应的文件夹路径,输出结果如下:
有时间我再简化一下代码,目前先这样。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。