Python压缩和解压缩实践

工作需要,将已经打好的war包解压出来,重新压缩WEB-INF中的classes文件夹到WEB-INF.zip

那就只好从实际出发,用代码来了解一下python的压缩解压缩了。

1#!/usr/bin/env python 2# encoding: utf-8 3 4""" 5@version: 1.0 6@author: jiangmtiao 7@site: my.oschina.net/jiangmitiao/blog 8@software: PyCharm 9@file: autoPackage.py 10@time: 2016/3/23 9:42 11@description: TODO 12""" 13import os 14import zipfile 15 16 17class AutoPackage(object): 18    def __init__(self, mavenPath="auto", projectPath="./"): 19        self.mavenPath = mavenPath 20        self.projectPath = projectPath 21        self.fileName = None 22        pass 23 24    def check(self): 25        # 检查是否有war文件,不存在则退出 26        tmpPath = os.path.join(self.projectPath, 'target/') 27        if not os.path.exists(tmpPath): 28            print "no target" 29            exit(-1) 30            pass 31        for fn in os.listdir(os.path.join(self.projectPath, 'target/')): 32            if fn.endswith(".war"): 33                self.fileName = fn 34                break 35                pass 36            pass 37        if self.fileName is None: 38            print " no *.war" 39            exit(-1) 40            pass 41        pass 42 43    def package(self): 44        tmpPath = self.projectPath + 'target/' 45 46        # 解压指定的文件 47        zipFile = zipfile.ZipFile(os.path.join(tmpPath, self.fileName)) 48 49        for f in zipFile.namelist(): 50            if f.find("classes/com") > 0: 51                zipFile.extract(f, tmpPath) 52                pass 53            pass 54 55        # 准备压缩文件 56        zpfd = zipfile.ZipFile(tmpPath + "/WEB-INF.zip", mode='w') 57        for dirpath, dirnames, filenames in os.walk(tmpPath + "/WEB-INF"): 58            for filename in filenames: 59                #oldFilename是相对路径或者绝对路径 60                oldFilename = os.path.join(dirpath, filename) 61                #zipFileName是打入压缩包中的文件路径 62                zipFileName = dirpath.replace(tmpPath + "/WEB-INF\\", "") + "/" + filename 63                zpfd.write(oldFilename, zipFileName) 64                pass 65             pass 66 67        zpfd.close() 68        pass 69 70 71if __name__ == '__main__': 72    auto = AutoPackage(projectPath="D:/idea/work/api/") 73    # auto = AutoPackage() 74    auto.check() 75    auto.package() 76    pass

更多文章:http://blog.gavinzh.com

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )