2016-07-13 2 views
1

多くの.htmlファイルからなる.zipファイルをユーザーに出力するプログラムがあります。 .zipの外側に.htmlファイルが存在する必要はないので、tempfileモジュールを使用してTemporaryFilesにすることが考えられました。 TempFileの.zipを書くにはどうすればいいですか?TemporaryFilesで構成される.zipを書くことはできますか?

可能であれば、TemporaryFilesの名前を指定して、ユーザーが.zipを解凍したときにファイルに読み込み可能な名前を付けることもできますか?

答えて

1

zipファイルを作成する最もよい方法は、必要なすべてのファイル(HTML)ファイルを(一時的な)ディレクトリに保存することです。次に、ディレクトリを圧縮することができます。

言ってやるが、あなたのHTMLファイルを書き込むために使用される機能write_htmlwork_dirであなたのZIPファイルを保存し、あなたはこのようなあなたの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

私がまさに必要。ありがとう! –

関連する問題