[英]Unable to extract ZIP file created with Python using zipfile.ZIP_DEFLATED compression method
[英]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.