文件递归 查找出以('jpg', 'gif', 'png','JPG', 'GIF', 'PNG') 结尾的文件并打印
遇到的bug: 好几个文件夹下面的照片都是以大写格式的JPG 显示的,当时只考虑到小写, 导致其他文件以.JPG结尾的文件都打印不出来。。。导致问题定位了很久
遗留:压缩包的文件(rar 或zip )暂未处理
思路:文件解压 pip3 install rarfile 得将unrar.exe放在当前脚本的同一目录下
import os #import rarfile def get_picture(filepath, layer): #遍历filepath下所有文件,包括子目录 prefix = joinStr('-', layer) layer += 1 if os.path.isdir(filepath): print(prefix, ' 文件夹 ', filepath, " size=", os.path.getsize(filepath)) else: print(prefix, ' 文件 ', filepath, " size=", os.path.getsize(filepath)) return files = os.listdir(filepath) for fi in files: #文件路径 fi_d = os.path.join(filepath,fi) if os.path.isfile(fi_d): prefix = joinStr('-', layer) if os.path.basename(fi_d).endswith(('jpg', 'gif', 'png','JPG', 'GIF', 'PNG')): print(prefix, fi_d, " size=", os.path.getsize(fi_d)) elif fi_d.endswith(('.zip', '.rar')): print(prefix, "发现压缩包: ", fi_d, " size=", os.path.getsize(fi_d)) # rf = rarfile.RarFile(fi_d)# 待解压文件 # current_path=fi_d.split('.')[0] # # rf.extractall(current_path) # 解压到当前文件路径下 # if os.path.isdir(): # get_picture(current_path) # rf.close() else: print(prefix, ' 其他文件 ', fi_d, " size=", os.path.getsize(fi_d)) # 判断是否是文件夹 #如果是个dir,则再次调用此函数,传入当前目录,递归处理。 elif os.path.isdir(fi_d): get_picture(fi_d, layer) else: print("你弱爆了") #return def recursorFile(filePath, layers): """ :param filePath: 文件对象 :param layers: 层数 """ front = joinStr("-", layers) print(front, end="") print(os.path.basename(filePath)) def joinStr(str, times): rs = "" for i in range(times): rs += str return rs #recursorFile('F:\照片', 3) get_picture('F:\照片', 0)