Python - 批量获取文件夹的大小输出为文件格式化保存
很多时候,查看一个文件夹下的每个文件大小可以轻易的做到,因为文件后面就是文件尺寸,但是如果需要查看一个文件夹下面所有的文件夹对应的尺寸,就发现需要把鼠标放到对应的文件夹上,稍等片刻才会出结果。
有时候,我们需要查看几十个甚至于上百个文件夹,找出包含文件最多,空间占用最大的那个,就比较麻烦了。这段代码是我以前的代码,可以按大小排序输出文件夹大小到txt文件,供使用的方便。
格式化当时花了很长时间,最后发现使用‘YaHei.Consolas’字体可以解决,对齐后输出结果看起来还算舒服。
上代码:
import os
import datetime def get_folder_size(path):
folder_size = 0 if not os.path.exists(path):
return folder_size if os.path.isfile(path):
folder_size = os.path.getsize(path)
return folder_size
try:
if os.path.isdir(path):
with os.scandir(path) as directory_lists:
for directory_list in directory_lists:
if 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 return folder_size
except:
pass # 以下主要是为了格式化输出
def get_file_length(file_name):
characters = list(file_name)
ascii_length = 0
utf8_length = 0 for character in characters:
if ord(character) < 128:
ascii_length += 1
else:
utf8_length += 2 return ascii_length + utf8_length def main(basedir):
with os.scandir(basedir) as dirs:
directory_size = []
for dir in dirs:
try:
if not dir.is_file():
dirsize = round(get_folder_size(dir.path) / 1000000) # return the file size in Mb
resformat = [dir.name, dirsize]
directory_size.append(resformat)
except:
pass
results = sorted(directory_size, key=lambda x: x[1], reverse=True) # return a list ordered by size
results = [[i[0], '文件夹大小:' + str(i[1]) + ' Mb'] for i in results] with open(basedir + os.sep + datetime.date.today().isoformat() + '.txt', 'a+') as f:
for result in results:
# 按照50的宽度格式化输出结果
len1 = 50 - get_file_length(result[0]) + len(result[0])
len2 = 25 - get_file_length(result[1]) + len(result[1])
f.writelines('{:<{len1}s} {:>{len2}s}\n'.format(result[0], result[1], len1=len1, len2=len2))
print('The result was successfully saved in the directory with date as file name.') if __name__ == "__main__":
basedir = input("Please input the directory you would like to know the sizes: ")
main(basedir)
如果输入相应的文件夹路径,输出结果如下:
有时间我再简化一下代码,目前先这样。
Python - 批量获取文件夹的大小输出为文件格式化保存的更多相关文章
- shell 文件夹总大小 du -sh 文件夹
du -sh 文件夹 du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件> ...
- 如何获取阿里云OSS上每个文件夹的大小
原文 https://help.aliyun.com/document_detail/88458.html?spm=a2c4g.11186623.2.11.792462b15oU02q OSS文件按照 ...
- python判断文件和文件夹是否存在、创建文件夹
>>> import os >>> os.path.exists('d:/assist') True >>> os.path.exists('d: ...
- python 判断文件和文件夹是否存在、创建文件夹
原文链接:https://www.cnblogs.com/hushaojun/p/4533241.html >>> import os >>> os.path.ex ...
- python实践项目十:zipfile模块-将一个文件夹备份到一个 ZIP 文件
描述:将指定路径下的某文件夹备份到一个zip文件 代码: #!/usr/bin/python # -*- coding: UTF-8 -*- # backupToZip - Copies an ent ...
- java:多层文件夹情况下,判断文件夹下是否有文件夹,并获取到没有文件夹的名字的方法
业务问题案例 在公司遇到的一个问题,本以为很小很好解决,没想到花了一下午时间.图给的是文件路径,page1下有10个文件夹,每个有的有文件夹或者文件,要求得到page1下(即:123456789,10 ...
- (一一七)基本文件操作 -SDWebImage清除缓存 -文件夹的大小计算
在iOS的App沙盒中,Documents和Library/Preferences都会被备份到iCloud,因此只适合放置一些记录文件,例如plist.数据库文件.缓存一般放置到Library/Cac ...
- C#_IO操作_查询指定文件夹下的每个子文件夹占空间的大小
1.前言 磁盘内存用掉太多,想查那些文件夹占的内存比较大,再找出没有用的文件去删除. 2.代码 static void Main(string[] args) { while (true) { //指 ...
- java批量解压文件夹下的所有压缩文件(.rar、.zip、.gz、.tar.gz)
// java批量解压文件夹下的所有压缩文件(.rar..zip..gz..tar.gz) 新建工具类: package com.mobile.utils; import com.github.jun ...
随机推荐
- [模拟]Codeforces Circle of Students
Circle of Students time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数
PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数 ...
- apache系统故障排查方案及相关操作知识
apache系统故障排查方案及相关操作知识 1.查看系统开的apache服务在哪个端口监听,有几个apache在服务,它的初始pid是多少 netstat -alop |grep LISTEN |gr ...
- C++最简打开网页的方法
system("explorer https://pay.747fz.com");
- java对象clone
java克隆 为什么需要克隆 我们在很多时候需要使用一个对象去记录另外一个对象的当前状态,对象中可能会有很多属性,如果我们一个一个去设置,不仅不方便,而且效率很低,我们看一个初学者可能遇到的问题 cl ...
- 解决VS项目程序运行完就自动关闭窗口
VS的程序运行完会关闭窗口,需要设置工程属性 笔者虽然是Java开发者,但是学习用到了C++与C语言,之前使用的是dev与codeblock并没有这个情况,那么如何解决 首先你有这个hello,wor ...
- SHTC3温湿度传感器的使用
1.SHTC3简单说明 SHTC3是一个检测温度.湿度的传感器,可以检测-40℃~125℃的温度范围和0%~100%的湿度范围. SHTC3的工作电压范围为:1.62V~3.6V. SHTC3使用的通 ...
- 1045 Favorite Color Stripe (30分)(简单dp)
Eva is trying to make her own color stripe out of a given one. She would like to keep only her favor ...
- window部署ftp服务器
...
- Linux基础:Day02
Linux文件管理 创建 touch vim/vi echo重定向 touch 管理:atime mtime ctime touch 文件名 //如果文件不存在就创建文件 touch -a -t [ ...