您的位置:首页 > 编程语言 > Python开发

python在已有zip文件中添加新文件

2019-07-08 14:59 98 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_35933684/article/details/95060241

       当前一个项目需要用到在已存在的zip文件中add进去一个新文件,身为python新兵的我甚是惶恐,对python对zipfile的操作也不甚了解,然后开始在各种博客中求助,然而很让人失望,太多的雷同贴,都是讲zipfile的方法,陈词滥调,乏味枯燥,我更喜欢一些实例,自己可以参考尝试,这样再去改造,使用,那就信手拈来了,最后没办法还是自己摸索吧,结果也是可想而知,被暴击了,还好,最后参考了Android原生OTA升级包中的zip制作方法,看到有此类问题解处理,尝试后,效果很好,果断记录下来,防止后期再去爬坑,身为新兵,希望大家指点迷津,提出更优美的处理方式。

<------------------------------------------------------------------------华丽的分割线------------------------------------------------------------------------->

[code]#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import os
import zipfile

#压缩包中的文件名,为新创建文件
zipFileName = "aa/bb/cc.txt"

def add_file_into_package(file, output_zip):
print "##file is " + file
print "##output_zip is " + output_zip
#check the version file
ziphandler = zipfile.ZipFile(output_zip, "a", compression=zipfile.ZIP_DEFLATED)
f = open(file, "r")
zinfo = zipfile.ZipInfo(zipFileName, date_time=(2019, 07, 0, 0, 0, 0))
zinfo.compress_type = ziphandler.compression
zinfo.external_attr = 0644 << 16
ziphandler.writestr(zinfo, f.read())
f.close()
ziphandler.close()
print "add success."

def main(argv):
if len(argv) != 2:
print "len(argv) is ", len(argv)
sys.exit(1)
if os.path.isfile(argv[0]) is False:
print "the " + argv[0] + " origin file is not exist"
return
if os.path.isfile(argv[1]) is False:
print "the " + argv[1] + " zipfile is not exist"
return
add_file_into_package(argv[0], argv[1])
return

if __name__ == '__main__':
try:
main(sys.argv[1:])
except ZeroDivisionError, e:
print
print "   ERROR: %s" % (e,)
print
sys.exit(1)

test压缩包目录结构

执行命令

python my_test.py cc.txt my_test.zip

执行命令后目录接口

可以看到cc.txt新增到了压缩文件中,这里是在代码 zipFileName中指定的,如果需要动态变更,还需要继续优化代码

完结!!!

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: