shutil.make_archive 问题 - 不希望 zip 文件中包含目录

web*_*ost 4 python zip shutil

我正在尝试存档 2 个文件,但不是导致这两个文件的完整路径。希望有人能指出我正确的方向:

我的目录结构如下。我只有两个要备份的文件。

/tmp
    my_stuff
        -hello.html
        -hello2.html
Run Code Online (Sandbox Code Playgroud)

所以根据文档,shutil.make_archive 可以压缩整个目录。我正在使用以下命令:

shutil.make_archive( base_name =  '/tmp/package',
                     format    =  'zip',
                     root_dir  =  '/tmp/my_stuff', 
                     base_dir  =  '/tmp/my_stuff' )
Run Code Online (Sandbox Code Playgroud)

此命令成功创建了 zip 文件,但是当我执行“从 /tmp 文件夹中解压缩 package.zip”时,我得到以下信息:

?  /tmp unzip package.zip
Archive:  package.zip
   creating: tmp/my_stuff
  inflating: tmp/my_stuff/hello.html  
  inflating: tmp/my_stuff/hello2.html
Run Code Online (Sandbox Code Playgroud)

它在 tmp 和一个名为 my_stuff 的新文件夹和 2 个文件中创建一个重复的“tmp”。我想要的只是提取这两个文件(没有目录)。任何意见,将不胜感激。

谢谢

Mau*_*yer 5

要创建没有任何目录的平面,您需要更改 base_dir:

shutil.make_archive( base_name =  '/tmp/package',
                     format    =  'zip',
                     root_dir  =  '/tmp/my_stuff', 
                     base_dir  =  './' )
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你!这条信息实际上应该是[官方文档和示例](https://docs.python.org/3.10/library/shutil.html#archiving-example)的一部分,因为它似乎是一个相当常见的用例。 (2认同)