磁盘清理-读取大文件夹

xiaoxiao2021-02-28  140

前言

C盘一直亮红灯,苦于找不到合适的清理方法. 于是,自己撸了一串代码,帮忙找出>500M(自定义)的文件夹,然后判断是否删除,另外对空文件进行删除.

运行环境

python 3.5 windows 7 32bit

代码

#-*-coding:utf-8-*- import os from os.path import join,getsize def listbigfile(dir,size,txtfile): ''' # 获取一级目录下所有文件或文件夹大小 # 文件>500M的列出来 ''' txtfile.write('Filename '+' '+'Size '+'\n') txtfile.write('-------------------------------------------'+'\n') filenum = 0 # 获取所有一级目录文件 files = os.listdir(dir) for f in files: if f[0] == '$': pass else: print(f) try: filepath = os.path.join(dir,f) # 跳过文件 if os.path.isfile(filepath): continue # 空文件夹跳过 if not os.listdir(filepath): print(f+' 为空文件夹.') continue # 如果是文件夹进入二级目录 if os.path.isdir(filepath): secondary_files = os.listdir(filepath) if secondary_files[0]=='$': #忽略隐藏文件夹 continue for sec_f in secondary_files: print(' '+sec_f) # 若二级目录为文件夹,计算文件夹大小 sec_filepath = os.path.join(filepath,sec_f) # 跳过文件 if os.path.isfile(sec_filepath): continue #判断文件夹是否为空 if not os.listdir(sec_filepath): print(sec_filepath+' 文件夹为空') # 删除空目录 os.rmdir(sec_filepath) continue filesize = getdirsize(sec_filepath) filesize = (int)(filesize/1024/1024) # 文件或文件夹大于500M,写入file if filesize >500: filenum += 1 print(sec_filepath) txtfile.write(sec_filepath+' '+ str(filesize)+'\n') except Exception as e: print(filepath+'该文件不可读..') continue finally: pass txtfile.write('\n'+'all big file num is '+str(filenum)) def getdirsize(dir): size = 0 # 测试os.walk for root,dirs,files in os.walk(dir): try: size+=sum([getsize(join(root,name)) for name in files]) except Exception as e: print('文件大小无法计算 . ') continue return size if __name__=='__main__': dir = input('please input the path : ') size = input('define the size for big file : ') myfile = open('list.txt','w',encoding='utf-8') # 默认存储在.py文件同一路径(解决中文乱码) #dir='C:\\' listbigfile(dir,size,myfile) myfile.close()

执行结果

将>500M(自定义)的文件写入文件中:

Filename Size ------------------------------------------- E:\kankan\android 1962 E:\kankan\music 1734 E:\kankan\Steve Jobs 21636 all big file num is 3

附加

python 3.x与2.x相比的一些不同:

long 和 int 类型被统一为一种类型,删除了后缀 L;python2.x的raw_input 变成 input;

参考文献

1.Python 3 初探,第 1 部分: Python 3 的新特性 2. Python 获取目录大小 3. win7下python3.4读写中文文件不乱码 4. python 获取当前目录下文件 5. python 读取一个目录下的所有目录和文件

转载请注明原文地址: https://www.6miu.com/read-20033.html

最新回复(0)