我正在使用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但没有任何目录结构。
我该怎么做?我没有在文档中找到这些信息。
由于
答案 0 :(得分:19)
首先添加
import os
然后将archive.write
行修改为:
archive.write(pdffile, os.path.basename(pdffile))
这指定应将每个pdf写入zip文件,其路径仅相当于您从中读取它的路径的文件名部分(通过指定arcname parameter for the write()
call)。
但请注意,这意味着如果您在不同目录中有两个同名的PDF文件,则会覆盖另一个。