像文件资源管理器一样使用 Python Shutil 压缩文件

Jak*_*keD 3 python directory zip shutil

背景

我正在尝试使用 python Shutil 压缩目录,如下所示:

shutil.make_archive("~/Desktop/zipfile", 'zip', "~/Documents/foldertozip")
Run Code Online (Sandbox Code Playgroud)

但结果仅压缩“foldertozip”内的文件。例如,

foldertozip
    -- file1
    -- file2
zipfile.zip
    -- file1
    -- file2
Run Code Online (Sandbox Code Playgroud)

另一方面,如果我从 Windows 文件资源管理器或 mac finder 中压缩它,我会得到以下信息:

foldertozip
    -- file1
    -- file2
zipfile.zip
    -- foldertozip
        -- file1
        -- file2
Run Code Online (Sandbox Code Playgroud)

问题

如何使用 Shutil 执行与文件资源管理器相同的操作并包含基本目录?我知道我可以将“foldertozip”复制到具有相同名称的文件夹,然后压缩该文件夹,但如果可能的话,我更喜欢更干净的解决方案。

Gre*_*sky 6

make_archiveroot_dir如果您同时通过和,就会做您想做的事base_dir。请参阅文档

import shutil

shutil.make_archive('~/Desktop/zipfile', 'zip', '~/Documents/', 'foldertozip')
Run Code Online (Sandbox Code Playgroud)