使用 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.pyfile_2.pyfile_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 归档每个文件的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 python zipfile 归档符号链接

归档目录中的所有 csv 文件

用于自动将文档归档到正确文件夹的机器学习方法[关闭]

Python中使用tarfile压缩解压tar归档文件示例(最新+全面=强烈推荐! ! !)

登录csv文件的正确方法是啥?

cad归档的命令是啥