将文件附加到 python 中的 ZipFile

Append a file to a ZipFile in python

首先我创建了一个新的压缩文件:

import zipfile
zf = zipfile.ZipFile('/data2/new.zip', mode='w')

然后我想将一个文件附加到新创建的 zip 文件中,例如 download.py 在另一个文件夹中:

zf.write('/data2/another_folder/download.py')

一切似乎都很好,直到我在本地解压缩它,我发现它不仅附加了文件,还附加了所有文件夹,data2another_folder。我必须打开 /data2/new/data2/another_folder/ 才能找到 download.py

我想追加并且只追加文件到 zipfile。如何避免上述情况?

zf.write('path/to/file.txt', arcname='name_without_path.txt')

应该可以帮你解决这个问题,如果你想在没有路径的情况下保持相同的名称,你也可以这样做:

filepath = 'path/to/file.txt'
zf.write(filepath, arcname=os.path.basename(filepath))

假设你import os当然

zipfile.write() 方法接受一个可选的 arcname 参数,指定压缩文件中的文件名。

import os
import zipfile


zf.write('/data2/another_folder/download.py', 'download.py')
zf.close()

这是一个将多个文件压缩在一起的函数:

def zip(list_of_file_paths):
   zf = zipfile.ZipFile("Zipfile.zip", "w", zipfile.ZIP_DEFLATED)
   for path in list_of_file_paths:
       filename = os.path.basename(os.path.normpath(path))
       zf.write(path, filename)
   zf.close()

zip(['path/to/file1', 'path/to/file2', ...]