用python遍历文件夹的时候,由于文件夹会包括文件夹的情况,很多人刚开始会想到的是递归遍历,于是去网上搜索遍历的方法,结果出现很大一串代码,递归调用,结果试了半天还晕头转向,还需要加以验证,其实python有一个十分快捷的方法,不得不说这就是越来越多的人开始用python的原因
path1 = glob.glob(unzip + '\**',recursive=True) #unzip指的是你需要遍历的文件夹
print (path1)
在用python解压缩包的时候,有两种方法,一种是根据不同的压缩包类型,调python中不同的库。比如说解压zip类型压缩包,需要用到unzip,解压tar类型压缩包,又需要调用其他的库,这样做不好。另外一种方法是下载一个7z软件,找到exe所在路径,然后在python中调用os模块,输入对应的7z命令,就可以解决众多类型的压缩包。
解压命令为:
cmd = '\"C:\\Program Files\\7-Zip\\7z.exe\" x \"{0}\" -oe:/测试解压/new *.mp4 -r'.format(name) os.popen(cmd)
可以参照这篇文章:https://www.cnblogs.com/greatfish/p/7208957.html
近期遇到一个需求就是需要遍历某个目录下的所有文件,有个前提,这个目录下不会有文件夹,要么是文件,要么是压缩包。如果是压缩包需要解压,压缩包中也会有文件夹,遍历该目录下的所有文件,找到包含了关键字的文件路径,如果条件吻合,有需要的人可以直接copy,代码如下
import os
import glob
import time
def getFileAtt(folder_name,contains_name):
print(folder_name)
os.chdir(folder_name)
file_names = os.listdir("./")
file_att_list = []
for name in file_names:
print("是不是文件:", os.path.isfile(name))
if os.path.isfile(name):
name = os.path.abspath(name)
# 返回一个元组,元组第二个元素是扩展名
if os.path.splitext(name)[1] == ".zip":
unzip = os.path.splitext(name)[0]
order = '\"C:\\Program Files\\7-Zip\\7z.exe\" x \"{0}\" -o'+ folder_name + ' -r'
print(order)
cmd = order.format(name)
os.popen(cmd)
#不设置延时会导致还没有解压完,就开始去找文件,导致找到文件错误
time.sleep(1)
path1 = glob.glob(unzip + '\**',recursive=True)
#print (path1)
file_att_list.append(path1)
elif os.path.splitext(name)[1] == ".rar":
unzip = os.path.splitext(name)[0]
order = '\"C:\\Program Files\\7-Zip\\7z.exe\" x \"{0}\" -o'+ folder_name + ' -r'
print(order)
cmd = order.format(name)
os.popen(cmd)
time.sleep(1)
path1 = glob.glob(unzip + '\**',recursive=True)
#print (path1)
file_att_list.append(path1)
elif os.path.splitext(name)[1] == ".7z":
unzip = os.path.splitext(name)[0]
order = '\"C:\\Program Files\\7-Zip\\7z.exe\" x \"{0}\" -o'+ folder_name + ' -r'
cmd = order.format(name)
os.popen(cmd)
time.sleep(1)
path1 = glob.glob(unzip + '\**',recursive=True)
#print (path1)
file_att_list.append(path1)
elif os.path.splitext(name)[1] == ".gzip":
unzip = os.path.splitext(name)[0]
order = '\"C:\\Program Files\\7-Zip\\7z.exe\" x \"{0}\" -o'+ folder_name + ' -r'
cmd = order.format(name)
os.popen(cmd)
time.sleep(1)
path1 = glob.glob(unzip + '\**',recursive=True)
#print (path1)
file_att_list.append(path1)
elif os.path.splitext(name)[1] == ".tar":
unzip = os.path.splitext(name)[0]
order = '\"C:\\Program Files\\7-Zip\\7z.exe\" x \"{0}\" -o'+ folder_name + ' -r'
cmd = order.format(name)
os.popen(cmd)
time.sleep(1)
path1 = glob.glob(unzip + '\**',recursive=True)
#print (path1)
file_att_list.append(path1)
elif os.path.splitext(name)[1] == ".bzip2":
unzip = os.path.splitext(name)[0]
order = '\"C:\\Program Files\\7-Zip\\7z.exe\" x \"{0}\" -o'+ folder_name + ' -r'
cmd = order.format(name)
os.popen(cmd)
time.sleep(1)
path1 = glob.glob(unzip + '\**',recursive=True)
#print (path1)
file_att_list.append(path1)
else:
#print(name)
file_att_list.append(name)
fileAtt = ''
for att_list in file_att_list:
if(contains_name in att_list):
print("*********" + att_list)
fileAtt = att_list
break
for att in att_list:
if(contains_name in att):
fileAtt = att
break
print('最后得到需要路径为:' + fileAtt)
return fileAtt
getFileAtt('C:/Users/hand_wl/Desktop/unfile','商务采购需求申请书' )
根据自己需要加以修改,此文介绍python解压跟python遍历文件夹的两种简便方法~
希望对人有帮助,毕竟刚开始知道这个需要的时候内心是爆炸的。