解析文件格式,参考模板压缩包

 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 '''
原文地址:https://www.cnblogs.com/dog-and-cat/p/11420266.html