在python中将文件附加到ZipFile

时间:2017-06-12 04:37:49

标签: python zip zipfile

首先我创建了一个新的zipfile:

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。我怎样才能避免上述情况?

提前致谢。

2 个答案:

答案 0 :(得分:1)

zipfile.write()方法采用可选的arcname参数,该参数指定zipfile中文件的名称。

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', ...]

答案 1 :(得分:0)

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

相关问题