ZipFile.extractall не копирует подкаталоги, вместо этого переименовывает файлы с указанием пути - PullRequest
0 голосов
/ 05 августа 2020

В настоящее время я пытаюсь написать сценарий, который будет извлекать zip-файл, созданный в PowerShell с помощью Create-Archive, в место назначения. Вот как я сейчас это делаю:

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

По большей части это работает, но в zip-файле есть папка. Вместо того, чтобы копировать папку и файлы в этой папке, он копирует файлы в указанный destination_path и переименовывает их. Например, у меня есть файл с названием «BatteryDead. html» в папке с именем «templates». При извлечении он помещает файл с именем templates\BatteryDead.html в папку root.

Есть ли способ извлечь подпапку (и подпапки этой папки) как есть? С сохранением каталогов в исправном состоянии?

Следует отметить, что при открытии ZIP-файла без извлечения отображаются правильные каталоги и имена файлов.

Вот структура файла до извлечения:

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

После использования extractall():

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

Это python версия 3.7.3

...