递归解压压缩包_模块更新(需要下载对应的解压程序)

 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 ‘‘‘

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

时间: 2024-11-05 18:30:11

递归解压压缩包_模块更新(需要下载对应的解压程序)的相关文章

模块讲解----shutil模块(copy、压缩、解压)

作用与功能 主要用于文件的copy,压缩,解压 导入shuitl模块: import shutil copy方法 1 1.shutil.copyfileobj()  打开file1,并copy写入file2: 2 with open("笔记1",'r',encoding='utf-8') as f1,open('笔记2','w',encoding='utf-8') as f2: 3    shutil.copyfileobj(f1,f2) 4 5 6 7 #输入文件名就能直接拷贝(调用

python学习笔记-Day7(configparser模块、shutil、压缩与解压模块、subprocess)

configparser模块 # configparser用于处理特定格式的文件,其本质上是利用open来操作文件 # 下边我们就创建这种特定格式配置文件,来操作以下这里模块方法 --------------test.conf---------------- [section1] # configparser 会认定以中括号括住的为一个节点(node) k1 = 111 # 节点下,每一行配置文件为键值对存在(也可以写成 k2:123) k2 = v2 k3 = 123 k4 = True k1

python解压压缩包的几种方法

python解压压缩包的几种方法 .gz .tar  .tgz .zip .rar 简介 gz: 即gzip,通常只能压缩一个文件.与tar结合起来就可以实现先打包,再压缩. tar: linux系统下的打包工具,只打包,不压缩 tgz:即tar.gz.先用tar打包,然后再用gz压缩得到的文件 zip: 不同于gzip,虽然使用相似的算法,可以打包压缩多个文件,不过分别压缩文件,压缩率低于tar. rar:打包压缩文件,最初用于DOS,基于window操作系统.压缩率比zip高,但速度慢,随机

PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载

PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载 http://my.oschina.net/junn/blog/104464 PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流.这里整理一下常用的示例供参考. 一.解压缩zip文件 ? 1 2 3 4 5 6 7 8 9 10 11 $zip = new ZipAr

压缩跟踪(CT)代码详细学习_模块1(样本的采集和扩充)

本章主要详解的是compressive tracking框架中的第一部分:样本的采集和扩充部分. 在开始代码学习的前面,你需要知道的理论知识参见论文:Real-time Compressive Tracking.理论理解可以参见我的博客:http://blog.csdn.net/ikerpeng/article/details/19826409 . 这个模块中你需要知道一个基本的概念:代码里面几个变量指的是什么.上一张图: 也许你现在还不知道他们是什么,直接贴代码了.相信有我的注释你一定会懂的.

python基础学习shutil高级的文件,目录,压缩包处理模块

shutil高级的文件,目录,压缩包处理模块import shutil 复制shutil.copyfileobj(f1,f2) #从一个文件对接复制到另一个文件对象,需要先打开文件shutil.copyfile() #拷贝文件shutil.copystat() #只拷贝文件状态信息 包括 modebits,atime,mtime,flagsshutil.copymode() #值拷贝权限.内容和组,用户均不改变shutil.copy() #拷贝文件和权限shutil.copy2() #同时拷贝文

SVN中基于Maven的Web项目更新到本地过程详解

环境 MyEclipse:10.7 Maven:3.1.1 概述 最近在做项目的时候,MyEclipse下载SVN上面基于Maven的Web项目总是出现很多问题,有时候搞了很半天,Maven项目还是出现叉号,最后总结了方法步骤,终于可以将出现的问题解决,在此,将重现从SVN上将基于Maven的Web项目变成本地MyEclipse中项目的过程,问题也在其中进行解决. 问题补充 在使用Myeclipse的部署Web项目的时候,在点击部署按钮的时候,没有任何反应,在此提供两种解决方法,问题如图1所示:

Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']

public function getMinLimit () {        $sql = "...";        $result = yii::app()->db->createCommand($sql);        $query = $result->queryAll();         return array (                $query [0] ['max'],         );    } $connection=Yii::

Lua中的模块(module)和包(package)详解1

这篇文章主要介绍了Lua中的模块(module)和包(package)详解,本文讲解了require函数.写一个模块.package.loaded.module函数等内容,需要的朋友可以参考下 前言 从Lua5.1版本开始,就对模块和包添加了新的支持,可是使用require和module来定义和使用模块和包.require用于使用模块,module用于创建模块.简单的说,一个模块就是一个程序库,可以通过require来加载.然后便得到了一个全局变量,表示一个table.这个table就像是一个命