【问题标题】:Preserve file structure with shutil.make_archive使用 shutil.make_archive 保留文件结构
【发布时间】:2020-01-05 03:02:38
【问题描述】:

有没有办法阻止一个 zip 文件打开到它自己的目录中?我正在尝试使用具有以下文件结构的 shutil.make_archive 压缩目录:

dir
\-- python
    \-- files

目前,我将它压缩在 python 目录中:

    shutil.make_archive(zip_name, "zip", os.getcwd())

这给了我一个 zip_name.zip 文件。当我解压它时,我希望它被解压到它的原始文件结构,不包括带有文件名的目录。我明白了:

zip_name
\-- python
    \-- files

但我想要:

python
    \-- files

有没有办法用 shutil 来做到这一点,或者我应该使用 Zipfile 来代替?感谢观看。

【问题讨论】:

    标签: python python-3.x shutil


    【解决方案1】:

    虽然我的朋友指出我可能可以使用相对路径来实现它,但我无法弄清楚如何让它与 shutil 一起工作。以为我会在这里为其他寻找答案的人发布我的答案。我转向 ZipFile,并想出了这个:

        with zipfile.ZipFile(zip_name, "w", zipfile.ZIP_DEFLATED) as new_zip:
        src_path = os.getcwd()
        for root, dirs, files in os.walk(src_path):
            for file in files:
                file_path = os.path.join(root, file)
                archive_file_path = os.path.relpath(file_path, src_path)
                new_zip.write(file_path, os.path.join("python/", archive_file_path))
    

    虽然有点笨拙,但它确实有效。它保留文件结构并直接解压缩到 python/ 目录而不是 zip_name 目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      • 2019-06-20
      相关资源
      最近更新 更多