import os import Image import numpy #rootdir=r'.\src\art\scene\diffuse' #errPath=r'.\plan\question\errFile.txt' import argparse # 处理参数使用 #import common # 一些通用的函数 import argparse import sys def encodeChinese(msg): type = sys.getfilesystemencoding() return msg.decode('UTF-8').encode(type) image_path='保存图片的路径' log_path='输出错误日志' help_image_path=encodeChinese(image_path) help_log_path=encodeChinese(log_path) help_path=encodeChinese('检测给定的文件夹中的文件是否符合要求(格式,大小,分辨率)') parser = argparse.ArgumentParser(description=encodeChinese('检测给定的文件夹中的文件是否符合要求(格式,大小,分辨率)')) parser.add_argument('--dir', action='store', dest='image_dir', help=help_image_path) #common.encodeChinese(help_log_path)) parser.add_argument('--log', action='store', dest='log_filename', help=help_log_path) #common.encodeChinese(help_log_path)) parser.add_argument('--version', action='version', version='%(prog)s 1.0') args = parser.parse_args() err_image_dir=encodeChinese('没有输入保存图片文件的文件夹') err_log_dir=encodeChinese('没有输入保存错误信息的日志文件名称') # 判断必须给定的参数 if args.image_dir is None : print err_image_dir#common.encodeChinese('没有输入保存图片文件的文件夹') sys.exit() if args.log_filename is None : print err_log_dir #common.encodeChinese('没有输入保存错误信息的日志文件名称') sys.exit() rootdir=args.image_dir errPath=args.log_filename #错误文件 errFile=open(errPath,'w') n=0 #父文件夹,子文件夹,文件名 for parent,dirnames,filenames in os.walk(rootdir): #for dirname in dirnames: for filename in filenames: #得到文件名和文件路径的二元组 filename1,filename2=os.path.split(filename) #连接根目录和文件名 filename=rootdir+os.sep+filename fName,fPath=os.path.splitext(filename) if((fPath=='.jpg') or (fPath=='.png')): f=open(filename,'rb') f.seek(0,2) fSize=f.tell() if(fSize/1024>1024): print rootdir #输出文件路径和文件名 filename=parent+os.sep+filename2 errFile.write(filename+'\n') err_sizeFile=encodeChinese('文件大小超过1024') errFile.write(err_sizeFile + ': ' + str(fSize/1024) +'\n') errFile.write('\n') elif(fSize/1024<=1024): img=Image.open(filename) value=img.size if(((img.size[0]<64)or(img.size[0]%64!=0)or(img.size[1]/img.size[0]>2)or (img.size[1]<64)or(img.size[1]%64!=0)or(img.size[0]/img.size[1]>2))): print parent print filename print img.size #errImfor='大小: '+str(f.tell())+' 尺寸: 'str(img.size) value=parent+os.sep+filename2 errSize=img.size errFile.write(value+'\n') err_bigFile=encodeChinese('文件分辨率错误') errFile.write(err_bigFile)#'the image so big: ') errFile.write(str(errSize)+'\n') errFile.write('\n') n+=1 else: #输出路径和文件名 outPath=parent+os.sep+filename2 errFile.write(outPath+'\n') err_File=encodeChinese('文件格式不正确') errFile.write(err_File)#'the File err') errFile.write('\n') n+=1 print fName f.close() errFile.close() print n #//python/1183