Python: переименование члена в файле tar во время извлечения - PullRequest
4 голосов
/ 07 ноября 2011

Помещение

  • У меня есть каталог /foo/bar
  • У меня есть tar-файл, содержащий каталог baz

Проблема

Извлечение содержимого baz в архиве в /foo/bar

Пример

Архив содержит:

baz/
 file1.txt

Исходный каталог содержит:

foo/
  bar/
    file2.txt

После извлечения я хочу, чтобы оно было:

foo/
  bar/
    file1.txt
    file2.txt

Решения до сих пор

Извлечение во временную директорию и затем перемещение содержимого baz в цельместоположение, это работает, так как у каталога baz всегда будет одно и то же имя.

Любые другие идеи?

1 Ответ

2 голосов
/ 07 ноября 2011

Можно использовать методы extract(), extractall() или extractfile() библиотеки tarfile . Вы должны иметь возможность доступа к объектам не верхнего уровня в архиве таким образом.

Просто обратите внимание, что path в extractall () - это не путь внутри архива, а путь, по которому вы хотите извлечь его, поэтому размещение baz там не поможет.

Вы, вероятно, сначала вызовете getmembers(), затем свяжете список с тем, что вам нужно, затем вызовите один из приведенных выше методов извлечения.

...