使用 zipfile 归档每个文件的正确方法是啥?
Posted
技术标签:
【中文标题】使用 zipfile 归档每个文件的正确方法是啥?【英文标题】:What is correct way to use zipfile to archive each file?使用 zipfile 归档每个文件的正确方法是什么? 【发布时间】:2020-12-21 14:27:47 【问题描述】:现在我需要在目标路径下单独归档文件。
这是树。
C:\Users\User\Downloads\
| file_1.py
| file_2.py
| file_3.py
|
\---Folder
file_4.py
file_5.py
这是我的代码。
import os
import zipfile
def archive(file_path):
for file_name in os.listdir(file_path):
file = os.path.join(file_path, file_name)
if os.path.isfile(file):
with zipfile.ZipFile(f'file.zip', 'w') as zip:
zip.write(file)
os.remove(file)
archive(r'C:\Users\User\Downloads')
我实际上可以分别存档file_1.py
、file_2.py
和file_3.py
。但是,我打开file_1.zip
,发现不仅文件被压缩,而且还包含完整路径。
使用 zipfile 归档每个文件的正确方法是什么?
【问题讨论】:
【参考方案1】:您可以使用write
函数的第二个参数来指定存档中文件的名称。只需将文件名传递给它。另外,使用os.walk()
处理所有文件夹:
def archive(folder):
for root, dirs, files in os.walk(folder):
for file in files:
full_path = os.path.join(root, file)
zip_file = os.path.join(root, f'file.zip')
with zipfile.ZipFile(zip_file, 'w') as zip:
zip.write(full_path, file)
# Delete original
os.remove(full_path)
【讨论】:
以上是关于使用 zipfile 归档每个文件的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章