壓縮
f=zipfile.ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=False)
創建一個zip文件對象,壓縮是需要把mode改為‘w’,這個是源碼中的注釋Open the ZIP file with mode read "r", write "w" or append "a",a為追加壓縮,不會清空原來的zip
f.write(filename)
將文件寫入zip文件中,即將文件壓縮
f.close()
將zip文件對象關閉,與open一樣可以使用上下文with as
write有2個可選參數:zipfile.write('原文件名',‘壓縮后的文件名') #第一個是必填,第二個選填
下面放個小demo
import zipfile import os def zipDir(dirpath,outFullName,name): """ 壓縮指定文件夾 :param dirpath: 目標文件夾路徑 :param outFullName: 壓縮文件保存路徑+xxxx.zip :return: 無 """ zip = zipfile.ZipFile(outFullName,"a",zipfile.ZIP_DEFLATED) for path,dirnames,filenames in os.walk(dirpath): # 去掉目標跟路徑,只對目標文件夾下邊的文件及文件夾進行壓縮 fpath = path.replace(dirpath,'') for filename in filenames: zip.write(os.path.join(path,filename),os.path.join(name+fpath,filename)) zip.close()
壓縮整個文件夾:
zipfile模塊對“文件夾”的壓縮其實是由壓縮文件的目錄結構實現的,因此可以使用os模塊的walk方法進行文件遍歷、寫入壓縮文件。
import zipfile,os with zipfile.ZipFile('aa.zip','w') as target: for i in os.walk('aa'): for n in i[2]: target.write(''.join((i[0],'\\',n)))