Python 办公小应用,扫描占用空间大的文件夹和文件(源码)
off999 2024-10-10 07:54 78 浏览 0 评论
代码用之前,要修改一下变量 folder 指向的扫描目录,
执行的时候,会在终端显示当前目录下的一级目录的大小和文件数,
会根据阈值设置,将扫描结果生成两个报告文件(csv格式),可以直接用 Excel 打开。
程序只是扫描,不会对文件进行任何操作。
如果你的电脑环境,已经将 .py 文件关联上 python ,可以直接双击 scan_disk.py 执行,
否则要在终端执行:
python scan_disk.py完整代码如下,只调用了 python 的标准库。
import os,time,sys,traceback
folder = r'c:/windows' # 要扫描的目录
folder_threshold = 1000 # 扫描目录阈值,单位 M
file_threshold = 100 # 扫描文件阈值
M_SIZE = 1024*1024 # 1M 的字节数
display_level = 1 # 在终端上显示目录的层级,设大了显示比较乱
file_rpt_name = '扫描文件报告.csv' # 最后生成的报告文件名
folder_rpt_name = '扫描目录报告.csv'
dirinfos = []
fileinfos = []
def format_time(t):
'''格式化时间'''
return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(t))
def my_rjust(width,st):
'''格式化字符串到指定长度,解决汉字问题'''
w = width - (len(st.encode('utf-8')) - len(st))//2
return st.ljust(w,' ')
def scan_dir(dir,level=0):
'''扫描目录'''
try:
files = os.scandir(dir)
dirsize = 0
filecount = 0
for f in files:
fullname = os.path.join(dir,f.name)
if f.is_file(): # 如果是文件,则扫描文件大小
fdata = f.stat() # 获取文件信息
if fdata.st_size > file_threshold * M_SIZE: # 文件大小超过设定的阈值
finfo = [dir,f.name.replace(',','')]
finfo.append(format_time(fdata.st_ctime))
fsize = round(fdata.st_size/M_SIZE,1)
finfo.append(str(fsize))
fileinfos.append(finfo)
dirsize += fdata.st_size
filecount += 1
elif f.is_dir(): # 如果是目录,则递归扫描
cur_size,cur_count = scan_dir(fullname,level+1)
dirsize += cur_size
filecount += cur_count
if cur_size > folder_threshold * M_SIZE:
dirinfos.append([fullname.replace(',',''),str(cur_count),'%.1f'%(cur_size/M_SIZE),format_time(f.stat().st_ctime)])
if level< display_level:
print('扫描结果:{} 文件数:{:6d} 占用空间: {:6.1f} M '.format(my_rjust(50,f.name),cur_count,cur_size/M_SIZE))
return dirsize,filecount
except Exception as e:
# print(e)
# traceback.print_exception(*sys.exc_info())
return 0,0 # 出错(无权限或者文件损坏)则跳过,返回 0 值
if __name__ == '__main__':
print('开始扫描...')
dirsize,filecount = scan_dir(folder)
print('开始结束...{} 目录下共有文件{}个,所占空间 {:.2f}M'.format(folder,filecount,dirsize/M_SIZE))
with open(folder_rpt_name,'w',encoding='utf-8') as f:
for dirinfo in dirinfos:
f.write(','.join(dirinfo)+'\n')
with open(file_rpt_name,'w',encoding='utf-8') as f:
for finfo in fileinfos:
f.write(','.join(finfo)+'\n')扫描结果报告(目录,文件数,占用空间(M),创建日期):
WinSxS 11 个 G ,为什么?
如果是全盘扫描,时间会稍长,可以先去凉快的地方待会儿。
相关推荐
- 惠普平板笔记本二合一(惠普平板笔记本二合一开不了机怎么办)
-
首先单击Office按钮,在下拉菜单中单击选择“打印”;2.在“打印”对话框中单击勾选“手动双面打印”复选项,再单击打印按钮进行打印;3.Word会先把1、3、5……等单页的内容发送到打印机打印;4....
- 台式机显卡天梯(笔记本显卡排行天梯图)
-
丽台显卡性能排行第一的是:丽台QuadroRTX8000第二是:丽台QuadroP620第三的是:丽台QuadroP2000第四是:丽台Quadrop4000第五是:丽台Quadrop1...
- win7更换壁纸(win7更换壁纸显示黑色)
-
1、首先点开桌面左下角的开始按钮然后在弹出的界面中找到控制面板并打开。2、在控制面板界面的个性化专栏中找到在找到屏幕保护程序并打开。3、在打开的新界面中找到屏幕保护程序并将选项更改为“无”保存后就完成...
- 如何获取windows7正版(如何获得正版win7)
-
关于这个问题,获得Windows7激活密钥的方法有几种:1.在购买Windows7时,通常会附带一张带有激活密钥的正版产品密钥卡。您可以查看产品盒内的卡片或说明书,以获取此密钥。2.如果您购买...
- 重装系统win7旗舰版62位(如何用重装系统win7旗舰版)
-
要重装Windows7系统,可以按照以下步骤进行操作:1.准备计算机:确保计算机已经安装了Windows11操作系统,因为Windows7的兼容性问题可能会影响安装过程。如果计算机上没有安装W...
- tp link app(TP LINKapp下载)
-
tplink手机app官方版是一款专为TP-LINK路由器手机设置应用,能够更好的管理TP-LINK路由器。tplink手机客户端特色1.实时获取路由器状态消息2.本地管理局域网内的TP-LINK路由...
- 如何彻底关掉windows更新(如果关闭windows更新)
-
方法一:Windows设置 要想关闭Win10自动更新,比较简单的一种方法就是进入到Windows设置中,将Windows更新直接关闭。步骤如下: 1、按“Windows+I”键,打开Wind...
- pe怎么制作u盘启动盘(pe制作u盘启动工具)
-
制作U盘启动PE的方法:1、准备一个8G或以上容量的U盘,接入电脑,u盘启动PE制作工具会自动识别u盘,2、接着,设置模式和格式,一般默认选择USB—HDD以及NTFS,点击一键制作成U盘启动PE...
- iso镜像系统下载(下载iso镜像文件)
-
vmwareiso镜像文件可以从VMware官网下载。具体的下载步骤如下:1.打开VMware官网,进入产品下载页面。2.在产品下载页面,选择需要下载的VMware产品,比如VMwareWork...
- 电脑分区工具哪个好用(电脑分区工具下载)
-
电脑分区助手使用方法1.首先先打开我们的分区助手。2.我们把鼠标放上去然后点击鼠标右键选择合并并分区。3.然后勾选上我们未分配的空间。4.然后就扩展完成了。1、《CrystalDiskMark》是一款...
- 字体大小怎么调(win10字体大小怎么调)
-
在大多数文字处理软件和编辑器中,设置字体大小通常是通过以下方法之一完成的:1.使用快捷键:常见的快捷键是使用Ctrl(或Command键)+"+"或"-...
- 联想电脑重装系统下载(联想系统重装软件)
-
联想电脑重装系统步骤:1、制作好U盘启动盘,然后把下载的联想win7系统iso文件直接复制到U盘的GHO目录下:2、在联想电脑上插入U盘,重启后不停按F12或Fn+F12快捷键打开启动菜单,选择U盘项...
-
- qq靓号注册入口(qq靓号注册免费申请网址)
-
目前是没有qq靓号申请器的,因为qq靓号都是由腾讯qq直售代理的,想要申请只能在会员界面支付若干个月会员便可以获得,不同的靓号价格可能不一样,使用期限必须要有qq超级会员。QQ靓号是腾讯公司推出的一种增值QQ号码,是腾讯QQ新推出的一款邮箱...
-
2026-01-11 01:03 off999
- 电脑显示已连接上但是无法上网
-
排查处理:一、若使用的是公共网络:1.尝试在人流量较少的地方使用,并确认热点可正常使用。2.请确认是否需通过浏览器登录网站注册后才能上网。二、若使用的是家庭网络,建议连接其他wifi或手机个人热点进行...
- 手动更新显卡驱动(更新显卡驱动教程)
-
方法如下:1.打开设备管理器。在Windows10中可以键入"设备管理器"来搜索。2.展开"显示适配器"选项。3.右键单击要更新的显卡并选择"更新驱动程...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
