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 # 判断是否是MRS日志文件 21 def IsMrsLogFile(self,fileName): 22 [dirname, filename] = os.path.split(fileName) 23 mrsFiles = set(("ubp_dec_vgw", "ubp_mrs_vgw", "ubp_mrs_rec_man", "ubp_mrs_rec_sinker", "ubp_mrs_node_mgr", 24 "ubp_mrs_mgr", "ubp_mrs_ivs", "ubp_mrs_plb", "ubp.info.20")) 25 for nameFile in mrsFiles: 26 if nameFile in filename: 27 return True 28 else: 29 continue 30 return False 31 32 #对压缩文件进行解压操作 33 def Unzip(self,srcFile, folder_name, dstDir): 34 os.chdir(folder_name) 35 if self.IsMrsLogFile(srcFile) == False: 36 return 37 order = ""C:\Program Files\7-Zip\7z.exe" x "{0}" -r -o" + dstDir 38 cmd = order.format(srcFile) 39 print("正在解压:", cmd) 40 os.popen(cmd)#调用命令行控制台程序 41 time.sleep(5) 42 # shutil.move(str(order), dstDir) 43 44 #获取某个路径下所有的文件 45 def AllFile(self,filePath): 46 os.chdir(filePath)#os.chdir()方法用于改变当前工作目录到指定的路径,路径是"D:日志巡检存放路径" 47 path = os.getcwd()#os.getcwd() 方法用于返回当前工作目录,工作目录为"D:日志巡检存放路径" 48 file_names = os.listdir("./")#os.listdir()方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。它不包括 '.' 和'..' 即使它在文件夹中。只支持在Unix,Windows下使用。 49 for name in file_names: 50 if os.path.isfile(name):#判断路径是否为文件 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):#判断路径是否为目录 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 '''