如何在Python中使用Zipfile压缩带有扁平目录结构的文件?

时间:2012-10-08 07:36:03

标签: python python-2.7

我正在使用ZipFile包来压缩Python文件。这是我的代码:

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但没有任何目录结构。

我该怎么做?我没有在文档中找到这些信息。

由于

1 个答案:

答案 0 :(得分:19)

首先添加

import os

然后将archive.write行修改为:

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

这指定应将每个pdf写入zip文件,其路径仅相当于您从中读取它的路径的文件名部分(通过指定arcname parameter for the write() call)。

但请注意,这意味着如果您在不同目录中有两个同名的PDF文件,则会覆盖另一个。