前言
C盘一直亮红灯,苦于找不到合适的清理方法. 于是,自己撸了一串代码,帮忙找出>500M(自定义)的文件夹,然后判断是否删除,另外对空文件进行删除.
运行环境
python 3.5 windows 7 32bit
代码
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)
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
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')
listbigfile(dir,size,myfile)
myfile.close()
执行结果
将>500M(自定义)的文件写入文件中:
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 读取一个目录下的所有目录和文件