将文件附加到 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')
一切似乎都很好,直到我在本地解压缩它,我发现它不仅附加了文件,还附加了所有文件夹,data2
和 another_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', ...]
首先我创建了一个新的压缩文件:
import zipfile
zf = zipfile.ZipFile('/data2/new.zip', mode='w')
然后我想将一个文件附加到新创建的 zip 文件中,例如 download.py
在另一个文件夹中:
zf.write('/data2/another_folder/download.py')
一切似乎都很好,直到我在本地解压缩它,我发现它不仅附加了文件,还附加了所有文件夹,data2
和 another_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', ...]