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

Mri*_*lla 15 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()
Run Code Online (Sandbox Code Playgroud)

我面临的问题是创建的ZIP文件包含目录结构.添加的文件将添加完整的路径,这意味着提取存档的用户也将最终获得目录结构.我想将文件添加到ZIP但没有任何目录结构.

我怎样才能做到这一点?我没有在文档中找到这些信息.

谢谢

Amb*_*ber 20

首先添加

import os
Run Code Online (Sandbox Code Playgroud)

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

archive.write(pdffile, os.path.basename(pdffile))
Run Code Online (Sandbox Code Playgroud)

这指定应将每个pdf写入zip文件,其路径仅等于您从中读取它的路径的文件名部分(通过指定调用arcname参数write()).

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