该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
import os
dir_list=[]#需要遍历的磁盘或目录
kickout_dir=['System Volume Information','$RECYCLE.BIN']#排除系统拒绝访问的目录名称
filepath=r'D:\1.txt'#用于保存遍历出的文件的路径
geshi_list=[]#筛选文件格式
size=0
def get_dir(dirs):
with open(filepath,'a') as file:
for dir in dirs:
dirlist=os.listdir(dir)
for kick_dir in kickout_dir:
if kick_dir in dirlist:#如果存在系统拒绝访问的目录,就从列表里删除
dirlist.remove(kick_dir)
try:
for temp in dirlist:
tempdir=os.path.join(dir,temp)
if os.path.isdir(tempdir):#如果是目录就加到dir_list
dir_list.append(tempdir)
else:#如果是文件
#file_list.append('%s\n'%tempdir)
if len(geshi_list)!=0:
#判断格式列表是否为空,也就是是否需要筛选格式
for geshi in geshi_list:
if tempdir[-len(geshi):].upper()==geshi.upper():
if os.path.getsize(tempdir)/(1024*1024)>=size:
try:
file.write('%s\n'%tempdir)
print(tempdir)
except:
pass
else:#如果不筛选格式,就直接记录文件路径
try:
file.write('%s\n'%tempdir)
print(tempdir)
except:
pass
finally:
dir_list.remove(dir)#把已遍历过的目录路径从dir_list里删除
#======================================================================
dir_input=input('请输入需要遍历的磁盘,多个磁盘以空格隔开如:C D E\n')
temp=dir_input.split()
for temp1 in temp:
dir_list.append('%s:\\'%temp1.upper())
#======================================================================
geshi_input=input('请输入需要筛选的格式,多个格式以空格隔开如:jpg bmp gif;如果不需要筛选格式请输入N\n')
if geshi_input.upper()=='N':
geshi_list=[]
else:
temp=geshi_input.split()
for temp1 in temp:
geshi_list.append(temp1)
#=======================================================================
size=float(input('请输入最低文件大小,单位为M\n'))
while len(dir_list)!=0:
get_dir(dir_list)
input('已经将文件路径记录在D盘1.txt里按回车键退出')
#print(round(os.path.getsize(r'E:\1.txt')/(1024*1024),2))