Python中的Zip模塊

Python中的Zip模塊

在之前的項(xiàng)目中,遇到了一種業(yè)務(wù)場景,對于分包處理的smali文件,通過Apktool 1.5版進(jìn)行打包,只會(huì)識(shí)別smali文件下的smali文件,而從Dex并沒有導(dǎo)入到最終的apk包中,需要寫一個(gè)腳本重新將其余的smali文件打包成從Dex文件,然后寫入到apk中,這里我使用了python中的zip模塊來處理。

zipfile模塊下的ZipFile類

我們可以看一下該類中的注釋:

Class with methods to open, read, write, close, list zip files.

z = ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=True)

file: Either the path to the file, or a file-like object.
      If it is a path, the file will be opened and closed by ZipFile.
mode: The mode can be either read 'r', write 'w', exclusive create 'x',
      or append 'a'.
compression: ZIP_STORED (no compression), ZIP_DEFLATED (requires zlib),
             ZIP_BZIP2 (requires bz2) or ZIP_LZMA (requires lzma).
allowZip64: if True ZipFile will create files with ZIP64 extensions when
            needed, otherwise it will raise an exception when this would
            be necessary.

參數(shù) 意義
file zip壓縮文件路徑
mode 打開模式,其中r是讀取已存在的zip文件,w表示新建一個(gè)zip或者覆蓋原有zip文件,a表示將內(nèi)容添加到現(xiàn)有的zip中
compression zip文檔使用的壓縮方法,zipfile. ZIP_STORED、ZIP_DEFLATED、ZIP_BZIP2、ZIP_LZMA
allowZip64 需要?jiǎng)?chuàng)建大的zip文件的時(shí)候最好設(shè)置成True

獲取zip文件中的信息

import zipfile
import os
# -*- coding: utf-8 -*-

# 打開壓縮文件
zipFile = r'E:\Android\Android.zip'
zipTask1 = zipfile.ZipFile(zipFile,'r')
# 遍歷zip壓縮文件中的文件名稱
for name in zipTask1.namelist():
    print(name)
# 遍歷zip壓縮文件中的文件信息
for info in zipTask1.infolist():
    print(info)
zipTask1.close()

運(yùn)行結(jié)果:

創(chuàng)建zip文件以及添加文件

# 將一個(gè)文件寫入到zip包中
zipTask2 = zipfile.ZipFile(zipFile,'a',zipfile.ZIP_DEFLATED)
fileTxt = os.path.join(r'E:\Android',r'readme.txt')
zipTask2.write(fileTxt,r'readme2.txt')
zipTask2.close()

運(yùn)行結(jié)果:
我們可以到成功的將這個(gè)文件寫到了該zip文件中。


解壓zip文件

# 解壓文件:
targetDir = r'E:\MyBlog\Python_zip'
zipTask3 = zipfile.ZipFile(zipFile,'r',zipfile.ZIP_DEFLATED)
zipTask3.extractall(targetDir)
zipTask3.close()

設(shè)置解壓密碼

# 設(shè)置壓縮文件密碼
pwd = 'ilovepython'
zipFile = r'E:\Android\Android.zip'
zipTask4 = zipfile.ZipFile(zipFile,'r',zipfile.ZIP_DEFLATED)
zipTask4.setpassword(pwd)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 聲明:本文作者授權(quán)微信公眾號(hào)Android程序員(AndroidTrending)在微信公眾號(hào)平臺(tái)原創(chuàng)首發(fā)。 最近...
    ec95b5891948閱讀 14,731評論 14 165
  • 大多數(shù)APP都對API接口進(jìn)行了加密,防止第三方隨意調(diào)用接口,常用的方法是,設(shè)置一個(gè)key,在調(diào)用接口來發(fā)送請求時(shí)...
    vstorm閱讀 8,116評論 0 2
  • 2017年9月10日。雨。 淅淅瀝瀝下了一天的雨,早上躺在被窩里,不想起來。迷迷糊糊摸了手機(jī)看了一眼,6點(diǎn)43...
    泯北閱讀 201評論 1 0
  • 世上本來就沒有什么善惡黑白,世人只是站在了對自己有利的一方。 我小時(shí)候很天真,以為人都是善意的,后來到了城里上學(xué),...
    直死飛符閱讀 503評論 0 0
  • 首先,感謝腹黑的沖田君的贊賞,感謝各位的喜歡與閱讀。 上一篇后來自己看了幾遍感覺有點(diǎn)籠統(tǒng),雖然思路表達(dá)出來了,但是...
    不能笑的氣質(zhì)青年閱讀 670評論 8 2