2016-07-13 16 views
1

我有一個程序會輸出一個.zip文件,其中包含許多.html文件給用戶。我不需要.html文件存在於.zip之外的任何位置,所以我的想法是使用tempfile模塊將它們製作成TemporaryFiles。如何編寫TempFile的.zip(假設可能)?我可以寫一個由TemporaryFiles組成的.zip嗎?

如果可以,我還可以指定TemporaryFiles的名稱,以便當用戶解壓縮.zip時,這些文件將具有可讀的名稱?

回答

1

創建zip文件的最佳方法是將每個必需的文件(您的HTML)文件存儲在(臨時)目錄中。然後你可以壓縮目錄。

說,你保存在您的work_dir ZIP文件,你一個用來編寫HTML文件的函數write_html,你可以壓縮你的HTML文件是這樣的:

import os 
import shutil 
import tempfile 
import zipfile 

work_dir = "..." 
zip_path = os.path.join(work_dir, "delivery.zip") 

zip_dir = tempfile.mkdtemp() 
try: 
    with zipfile.zipfile(zip_path, "w", compression=zipfile.ZIP_DEFLATED) as zfd: 
     for html_name in html_names: 
      html_path = os.path.join(zip_dir, html_name) 
      write_html(html_path, html_name) 
      zfd.write(html_path, html_name) 
finally: 
    shutil.rmtree(zip_dir) 
+0

正是我需要的;謝謝! –

相關問題