【问题标题】: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 归档每个文件的正确方法是什么?

【问题讨论】:

    标签: python


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      相关资源
      最近更新 更多