带有Python Shutil类文件Exp的Zip文件

2024-09-30 03:23:35 发布

您现在位置:Python中文网/ 问答频道 /正文

背景

我尝试用python shutil压缩一个目录,如下所示:

shutil.make_archive("~/Desktop/zipfile", 'zip', "~/Documents/foldertozip")

但结果只是将文件压缩到foldertozip中。比如说

^{pr2}$

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

foldertozip
    -- file1
    -- file2
zipfile.zip
    -- foldertozip
        -- file1
        -- file2

问题

我如何使用shutil来做同样的事情,我可以从文件资源管理器和包括基本目录?我知道我可以将“foldertozip”复制到同名文件夹中,然后压缩该文件夹,但如果可能的话,我更希望使用更干净的解决方案。在


Tags: 文件目录文件夹makezipfile1documentsfile2
2条回答

如果您同时传递root_dir和{},则{}将执行您想要的操作。见the docs。在

import shutil

shutil.make_archive('~/Desktop/zipfile', 'zip', '~/Documents/', 'foldertozip')

根据make_存档文件:

shutil.make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]])

创建一个归档文件(例如zip或tar)并返回其名称。在

base_name是要创建的文件的名称,包括路径,减去任何特定于格式的扩展名。format是存档格式:“zip”、“tar”、“bztar”或“gztar”之一。在

root_dir是一个将作为存档的根目录的目录;也就是说,我们通常在创建归档之前先将其放入根目录。在

base_dir是我们开始归档的目录;也就是说,base_dir是存档中所有文件和目录的通用前缀。在

如果我正确地理解了这个问题,那么您需要使basedir等于“foldertozip”,根目录等于“foldertozip”的父目录。在

假设foldertozip在“Documents”下

所以这样的方法应该有效:

^{pr2}$

让我们知道,如果这是你所期待的工作!在

相关问题 更多 >

    热门问题