ZipFile.extractall不复制子目录,而是使用路径重命名文件

时间:2020-08-05 13:51:07

标签: python python-3.x zip zipfile

我当前正在尝试编写一个脚本,该脚本会将在Powershell中使用Create-Archive创建的zip文件提取到目标位置。这是我目前的操作方式:

    with zipfile.ZipFile(path_to_zip, 'r') as zip_ref:
        zip_ref.extractall(destination_path)

这在大多数情况下都有效,但是zip文件中有一个文件夹。与其复制文件夹和该文件夹中的文件,不如将文件复制到给定的destination_path并重命名它们。例如,我在名为“模板”的文件夹中有一个名为“ BatteryDead.html”的文件。解压缩时,它将名为templates\BatteryDead.html的文件放入根文件夹。

有没有办法让它按原样提取子文件夹(以及该文件夹的子文件夹)?保持目录完整吗?

应注意,打开ZIP文件而不进行解压缩将显示正确的目录和文件名。

以下是提取前的文件结构:

./zipped_directory.zip
|
|
|-----templates/
          |
          |-----'BatteryDead.html'
|-----'testfile.txt'

使用extractall()后:

/root/
|
|
|-----'templates\BatteryDead.html'
|-----'testfile.txt'

这是python版本3.7.3

0 个答案:

没有答案