解析文件格式,参考模板压缩包,第一次更新

 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_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()方法用于改变当前工作目录到指定的路径,路径是"D:\日志巡检存放路径"
46         path = os.getcwd()#os.getcwd() 方法用于返回当前工作目录,工作目录为"D:\日志巡检存放路径"
47         file_names = os.listdir("./")#os.listdir()方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。它不包括 ‘.‘ 和‘..‘ 即使它在文件夹中。只支持在Unix,Windows下使用。
48         for name in file_names:
49             if os.path.isfile(name):#判断路径是否为文件
50                 if self.Iszip(name) in (".tar.gz", ".tar.bz2", ".tar.bz", ".tar.tgz", ".tar", ".tgz", ".zip", ".rar", ".7z"):
51                     fileDir = os.path.splitext(name)[0]#分割路径,返回路径名和文件扩展名的元组
52                     if os.path.exists(fileDir):#如果路径path存在,返回True;如果路径path不存在,返回False.
53                         shutil.rmtree(fileDir) #递归删除一个目录以及目录内的所有内容
54                     srcFile = str(path) + "\\" + str(name)
55                     dstDir = str(path) + "\\" + str(fileDir)
56                     if self.IsMrsLogFile(srcFile) == False:
57                         continue
58                     print("创建目录:" + fileDir)
59                     os.mkdir(fileDir)
60                     self.Unzip(srcFile, path, dstDir)
61                     self.AllFile(dstDir)
62             elif os.path.isdir(name):#判断路径是否为目录
63                 self.AllFile(path + "\\" + name)
64             os.chdir(filePath)
65             path = os.getcwd()
66
67     def Run(self):
68         self.AllFile("D:\日志巡检存放路径")
69
70
71 ‘‘‘
72 run = UnzipLogFile("D:\日志巡检存放路径")
73 run.Run();
74 ‘‘‘

原文地址:https://www.cnblogs.com/dog-and-cat/p/11447255.html

时间: 2024-11-08 23:09:47

解析文件格式,参考模板压缩包,第一次更新的相关文章

企业级nginx.conf优化参考模板

以下是我整理的非常实用的企业级nginx.conf优化参考模板,整个配置并不一定适合各种环境,所以需要大家按各自需求选取部分功能配置到自己的nginx配置文件中. user nginx;     #Nginx服务的默认用户 worker_processes 4;     #一般为CPU核个数 worker_cpu_affinity 001 0010 0100 1000;  #绑定不同Nginx进程到不同CPU上 worker_rlimit_nofile 6535;     #worker进程最大

附录1:接口文档参考模板

https://www.w3cschool.cn/phalapi/5fhi1tth.html 附录1:接口文档参考模板 由 chanzonghuang 创建,最后一次修改 2016-11-20 虽然提供了在线接口参数的查看,但在和客户端对接过程中,我们作为后台开发,还是需要人工提供接口文档给客户端的,这里提供一个接口文档编写的模板,以供参考,并且以我们熟悉的?service=User.GetBaseInfo为例说明如何编写高效的文档. 温馨提示:斜体字表示是注释说明. 功能说明 对接口功能的简单

【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 Android热更新开源项目Tinker源码解析系类之三:so文件热更新 转载请标明本文来源:http://www.cnblogs.com/yyangblog/p/6252855.html更多内容欢迎star作者的github:https://github.com/LaurenceYang/artic

X.509证书的编码及解析:程序解析以及winhex模板解析

一.证书的整体结构:证书内容.签名算法.签名结果. 用ASN.1语法描述如下: Certificate::=SEQUENCE{ tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING } 其中,签名算法为CA对tbsCertificate进行签名所使用的算法:类型为AlgorithmIdentifier,其ASN.1语法描述如下: AlgorithmIdent

【BUG解析】调用PagerAdapter.notifyDataSetChanged()不更新

问题描述 Android开发一个广告显示的页面,支持左右滑动,当数据加载完成之后想刷新显示 调用mAdapter.notifyDataSetChanged() 来促发却没效果 问题调查 instantiateItem()在notifyDataSetChanged()后并没有被触发 问题修改     // getItemPosition的返回值将决定instantiateItem是否更新     @Override     public int getItemPosition(Object obj

HDU(1166),线段树模板,单点更新,区间总和

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 第一次做线段树,帆哥的一句话,我记下来了,其实,线段树就是一种处理数据查询和更新的手段. 然后,我的代码风格,是网上的大牛们的辛苦总结,我就套用了.这里,我还是简单说一下线段树,说的不好,主要方便自己复习. 线段树,3个步骤,建树,查询,更新, 建树:到底部就是a[]数组的值,建立左右子树后,向上推根,根为左右子树的值 更新:类似建树,二分,找到单点所在区间,更新该区间,记得上一个区间也要变化

我的模板(持续更新ing)[还很混乱]

1.头文件 短的: 1 #include<bits/stdc++.h> 2 #define cl(a,b) memset(a,b,sizeof(a)) 3 #define debug(a) cerr<<#a<<"=="<<a<<endl 4 using namespace std; 5 typedef long long ll; 6 typedef pair<int,int> pii; 7 8 const int

css简单参考手册(不断更新)

css3参考手册 1.css3属性参考手册 2.css3选择器参考手册 例子: <head><style>.test <-----CSS .class 选择器   1  针对所有class="test"元素 {background-color:yellow;} p.test <-----CSS .class 选择器   2   只针对p  class="test"元素{background-color:yellow;}</s

java正则表达式解析短信模板

/** * */ package testJava.java; import java.util.HashMap; import java.util.Map; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author xxx.sjtu * @function * @date 2016年4月12日 * @version */ public class