15

パッケージを使用してZipFilePythonでファイルを圧縮しています。これが私のコードです:

archive = zipfile.ZipFile(join(settings.ARCHIVES_DIR, 'test.zip'), "a")

for pdffile in glob.glob(join(settings.IBILLING_DIR, '*.pdf')):
    archive.write(pdffile)

archive.close()

私が直面している問題は、作成された ZIP ファイルにディレクトリ構造が含まれていることです。追加されるファイルは完全なパスで追加されます。つまり、アーカイブを抽出するユーザーも最終的にディレクトリ構造を取得することになります。ファイルを ZIP に追加したいのですが、ディレクトリ構造はありません。

これどうやってするの?ドキュメントでこの情報が見つかりませんでした。

ありがとう

4

1 に答える 1

22

最初に追加

import os

次に、archive.write行を次のように変更します。

archive.write(pdffile, os.path.basename(pdffile))

これは、各pdfを、それを読み取るパスのファイル名部分のみに相当するパスでzipファイルに書き込む必要があることを指定します(呼び出しのarcnameパラメーターをwrite()指定することにより)。

ただし、これは、異なるディレクトリに同じ名前の2つのPDFファイルがある場合、一方が他方を上書きすることを意味することに注意してください。

于 2012-10-08T07:38:56.333 に答える