9.8.1 选择性拷贝

一些不需要的、巨大的文件或文件夹占据了硬盘的空间,这并不少见。如果你 试图释放计算机上的空间,那么删除不想要的巨大文件效果最好。但首先你必须找 到它们。
编写一个程序,遍历一个目录树,查找特别大的文件或文件夹,比方说,超过 100MB的文件, 将这些文件的绝对路径打印到屏幕上。

import os,re#导入模块
path=input('请输入查找路径:')
size=input('输入查找文件大小:')#如100MB或100.0mb,输入单位为B,KB,MB或GB,大小写都可以,支持浮点数
def Unit_conversion(size):#将变量转换为以字节(B)为单位的整数
    rg = re.compile(r'B|KB|MB|GB',re.I)
    rg2=rg.search(size).group()
    if rg2.upper()=='B':
        size=int(float(size.rstrip(rg2)))
    if rg2.upper()=='KB':
        size=int(float(size.rstrip(rg2))*1000)
    if rg2.upper() == 'MB':
        size = int(float(size.rstrip(rg2)) * 1000*1000)
    if rg2.upper() == 'GB':
        size = int(float(size.rstrip(rg2))* 1000 * 1000*1000)
    return size
size=Unit_conversion(size)#将size转换为换整数
L=[]#变量初始化
for foldername,subfolders,filenames in os.walk(path):#遍历目录树
    foldersize=0
    for filename in filenames:#迭代文件列表
        if os.path.getsize(os.path.join(foldername,filename))>=size:#判断文件大小是否超标
            L.append(os.path.join(foldername,filename))
        foldersize+=os.path.getsize(os.path.join(foldername,filename))#所有文件大小的和
    if foldersize>=size:#判断文件夹大小是否超标
        L.append(foldername)
print(L)#输出超标文件或文件夹的绝对路径的列表

`

猜你喜欢

转载自blog.csdn.net/qq_40012965/article/details/81283574