转载请注明出处:http://blog.csdn.net/aitcax/article/details/46489981
target:
- 遍历文件夹
- 递归删除空文件夹
- 删除特定大小的文件
- 删除特定格式的文件
- 按照特定条件删除文件
detail target:
- 遍历文件夹
- 递归删除空文件夹
- 删除非图片文件,限定几种图片格式
- 删除小于指定大小的图片文件
- 删除长宽小于指定大小范围的图片文件
code:
# -*- coding: cp936 -*-
'''
遍历文件夹及其子文件夹
查找其中图片文件
过滤空文件
文件大小为0,过滤
'''
import os
import Image
Const_Image_Format = [".jpg",".jpeg",".bmp",".png",".gif"]
rootDir = "D:\source"
#判断路径是否存在
#os.path.exists(folderpath.encode('GBK'))路径如果存在,返回True
limit_size = 51*1024 #图片大小限制,30K
limit_height = 100 #高度限制
limit_width = 100 #宽度限制
class FileFilt:
#fileList = [""]
counter = 0
deleted = 0
errord = 0
def __init__(self):
pass
def FilterFile(self, dirr):
for parent,dirnames,filenames in os.walk(rootDir):
for filename in filenames :
fileDir = os.path.join(parent,filename)
if fileDir and (os.path.splitext(fileDir)[1] in Const_Image_Format ):
filesize = os.path.getsize(fileDir)
if (filesize <= limit_size):
os.remove(fileDir)
self.deleted+=1
else:
try:
fp = open(fileDir,'rb')
img = Image.open(fp)
w,h = img.size
if (w < limit_width or h < limit_height):
fp.close()
os.remove(fileDir)
self.deleted+=1
continue
#print self.counter,fileDir,'w=',w,'h=',h,',size=',(filesize/1024),'k'
self.counter+=1
except(IOError):
fp.close()
print "【ERROR】",fileDir
os.remove(fileDir)
self.errord+=1
else:
os.remove(fileDir)
self.deleted+=1
# 删除空文件夹
def delete_null_dir(dirr):
if os.path.isdir(dirr):
for p in os.listdir(dirr):
d = os.path.join(dirr,p)
if (os.path.isdir(d) == True):
delete_null_dir(d)
if not os.listdir(dirr):
os.rmdir(dirr)
print '移除空目录: ', dirr
if __name__ == "__main__":
print "===开始删除空文件夹==="
delete_null_dir(rootDir)
print "===结束删除空文件夹==="
b = FileFilt()
b.FilterFile(dirr = rootDir)
print 'count : ',b.counter
print 'deleted : ',b.deleted
print 'errord : ',b.errord
print 'execute finished.'