簡體   English   中英

使用zipfile模塊在python中創建具有壓縮功能的zip文件

[英]Creating a zip file with compression in python using the zipfile module

我是python的新手。 我的要求是將所有文件從源目錄壓縮(壓縮)到目標目錄。 我使用了來自stackOverFlow的以下代碼。

import zipfile, os
locfile = "D:\Python\Dir_dir\Dir_dir\ABC.txt"
loczip = "D:\Python\Dir_dir\Dir_dir2\ABC_TEST.zip"
zip = zipfile.ZipFile (loczip, "w")
zip.write (locfile)
zip.close()

它正在創建一個zip文件,但它包含整個繼承的目錄結構。 除了驅動器(D:/),其余結構都添加到zip中。 它看起來像如下:“ D:\\ Python \\ Dir_dir \\ Dir_dir2 \\ ABC_TEST.zip \\ Python \\ Dir_dir \\ Dir_dir \\ ABC.txt”

而我想要:“ D:\\ Python \\ Dir_dir \\ Dir_dir2 \\ ABC_TEST.zip \\ ABC.txt”

而且它沒有被壓縮。

請任何人分享此問題的解決方案。

謝謝,Subrat

要啟用壓縮,請在構造函數中指定壓縮方法:

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)

我認為您是要刪除zip文件中文件的相對路徑。 如果您真的想要,可以寫:

zip.write(locfile, os.path.basename(locfile))

但是,這可能不是一個好主意,因為如果壓縮兩個具有相同名稱的文件,則刪除所有路徑信息將導致命名沖突。

查看官方文檔 ,它可以清楚地解決您的問題。

ZipFile.write(filename, arcname=None, compress_type=None)

compress應該是已定義的常量之一,例如ZIP_DEFLATED

請注意,您還可以在構造函數上指定壓縮類型,它將應用於添加到zip歸檔文件中的所有文件。

該文檔還包含此注釋:存檔名稱應相對於存檔根目錄,也就是說,它們不應以路徑分隔符開頭。

另外,如果您只是將python zipfile輸入任何搜索引擎,那么您將把官方文檔視為第一個鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM