【发布时间】:2020-07-21 02:06:24
【问题描述】:
我正在使用以下文件夹结构:
.
+-- temp
| +-- sample1.csv
| +-- sample2.csv
+-- zips
| +-- zip1.zip
| +-- zip2.zip
+-- main.py
我想将temp 文件夹的内容压缩成一个压缩文件,但我不想包含该文件夹。我尝试了以下方法(希望只压缩文件):
import pathlib
import zipfile
origin = pathlib.Path('.') / 'temp'
destination = pathlib.Path('.') / 'zips' / 'zip3.zip'
with zipfile.ZipFile(destination, mode='w') as zipfile_:
for content in origin.iterdir():
zipfile_.write(content)
我也尝试使用shutil.make_archive(),但它呈现相同的结果,唯一的区别是该目录被简单地命名为"."。
编辑:感谢CookieReaver 和metatoaster(我相信)指出ZipFile.write() 方法有一个名为arcname 的参数,它将命名文件(ZipFile.write() documentation)。
这是我应用修复后的原始问题:
import pathlib
import zipfile
origin = pathlib.Path('.') / 'temp'
destination = pathlib.Path('.') / 'zips' / 'zip3.zip'
with zipfile.ZipFile(destination, mode='w') as zipfile_:
for content in origin.iterdir():
zipfile_.write(content, content.name)
【问题讨论】:
标签: python file directory zipfile pathlib