如何使用Python中的Zipfile对文件进行压缩并保持扁平化目录结构?

15

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

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中,但是不带任何目录结构。

我该如何做?我在文档中没有找到相关信息。

谢谢。


尝试使用 os.walk,而不是 glob? - wim
1个回答

22

首先添加

import os

然后将archive.write一行修改为:

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

这意味着每个PDF都应该被写入zip文件中,路径等同于从中读取它的路径的文件名部分(通过为write()调用指定arcname参数)。请注意,如果您在不同目录中有两个同名的PDF文件,则一个将覆盖另一个。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接