zoukankan      html  css  js  c++  java
  • 递归解压压缩包_模块更新(需要下载对应的解压程序)

     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 '''
  • 相关阅读:
    “回调地址”全攻略 java程序员
    超棒的纯Javascript实现的文件上传功能 Fine uploader java程序员
    帮助你操作数字和处理数字格式的javascript类库 Numeral.js java程序员
    正则表达式 java程序员
    一款非常棒的CSS 3D下拉式菜单实现Makisu java程序员
    Google的全新在线地图API演示网站 More than a map java程序员
    Android中的布局属性 java程序员
    整理一系列优秀的Android开发源码 java程序员
    Lambda表达式select()和where()的区别
    按公式产生随机数、java中的重载、递归、有关计算机计算的问题
  • 原文地址:https://www.cnblogs.com/dog-and-cat/p/11613808.html
Copyright © 2011-2022 走看看