递归解压压缩包_模块更新(需要下载对应的解压程序)
Posted dog-and-cat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归解压压缩包_模块更新(需要下载对应的解压程序)相关的知识,希望对你有一定的参考价值。
1 #!/usr/bin/python3 2 # -*-coding:utf-8-*- 3 import os 4 import shutil 5 import time 6 import sys 7 import subprocess 8 sys.setrecursionlimit(10000)#设置函数递归的最大深度,防止无限递归导致堆栈溢出和系统崩溃 9 10 class UnzipLogFile: 11 parentName = "D:广东应急厅巡检日志" 12 def __init__(self,filePath): 13 self.parentName = filePath 14 def Iszip(self,file):#此处自定义函数判断文件类型是不是压缩包类型 15 compress = [".tar.gz", ".tar.bz2", ".tar.bz", ".tar.tgz", ".tar", ".tgz", ".zip", ".rar", ".7z"] 16 for z in compress: 17 if file.endswith(z):#描述:判断字符串是否以指定字符或子字符串结尾. 18 return z 19 20 # 判断是否是BDC日志文件 21 def IsMrsLogFile(self,fileName): 22 [dirname, filename] = os.path.split(fileName) 23 mrsFiles = set(("ubp_bdc01_20", "ubp.info.20")) 24 for nameFile in mrsFiles: 25 if nameFile in filename: 26 return True 27 else: 28 continue 29 return False 30 31 #对压缩文件进行解压操作 32 def Unzip(self,srcFile, folder_name, dstDir): 33 os.chdir(folder_name) 34 if self.IsMrsLogFile(srcFile) == False: 35 return 36 order = ""C:\Program Files\7-Zip\7z.exe" x "{0}" -r -o" + dstDir 37 cmd = order.format(srcFile) 38 print("正在解压:", cmd) 39 os.popen(cmd)#调用命令行控制台程序 40 time.sleep(5) 41 # shutil.move(str(order), dstDir) 42 43 #获取某个路径下所有的文件 44 def AllFile(self,filePath): 45 os.chdir(filePath)#os.chdir()方法用于改变当前工作目录到指定的路径 46 path = os.getcwd()#os.getcwd() 方法用于返回当前工作目录 47 file_names = os.listdir("./")#os.listdir()方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。它不包括 ‘.‘ 和‘..‘ 即使它在文件夹中。只支持在Unix,Windows下使用。 48 for name in file_names: 49 name_path = path + "\" + name#此处需要将 50 if os.path.isfile(name_path):#判断路径是否为文件 51 if self.Iszip(name) in (".tar.gz", ".tar.bz2", ".tar.bz", ".tar.tgz", ".tar", ".tgz", ".zip", ".rar", ".7z"): 52 fileDir = os.path.splitext(name)[0]#分割路径,返回路径名和文件扩展名的元组 53 if os.path.exists(fileDir):#如果路径path存在,返回True;如果路径path不存在,返回False. 54 shutil.rmtree(fileDir) #递归删除一个目录以及目录内的所有内容 55 srcFile = str(path) + "\" + str(name) 56 dstDir = str(path) + "\" + str(fileDir) 57 if self.IsMrsLogFile(srcFile) == False: 58 continue 59 print("创建目录:" + fileDir) 60 os.mkdir(fileDir) 61 self.Unzip(srcFile, path, dstDir) 62 self.AllFile(dstDir) 63 elif os.path.isdir(name_path):#判断路径是否为文件夹 64 self.AllFile(path + "\" + name) 65 os.chdir(filePath) 66 path = os.getcwd() 67 68 def Run(self): 69 self.AllFile("D:广东应急厅巡检日志") 70 71 72 ‘‘‘ 73 run = UnzipLogFile("D:日志巡检存放路径") 74 run.Run(); 75 ‘‘‘
以上是关于递归解压压缩包_模块更新(需要下载对应的解压程序)的主要内容,如果未能解决你的问题,请参考以下文章