Распакуйте файл tar.bz2 с помощью модуля Python tarfile

У меня есть много файлов с расширением "tar.bz2", и я хочу их распаковать. Поэтому я использую модуль «tarfile», как описано здесь: https://docs.python.org/3/library/tarfile.html.

Я пробую следующий код:

import tarfile
tar = tarfile.open("path_to/test/sample.tar.bz2", "r:bz2")  
for i in tar:
  tar.extractall(i)
tar.close()

Но ничего не происходит: файл tar.bz2 не был распакован в папку "path_to/test/".

У вас есть идеи?
Спасибо!


person Julien    schedule 02.04.2015    source источник


Ответы (2)


Вы используете tar.extractall с неправильным аргументом. Я думаю, вам нужно что-то вроде этого

import tarfile
tar = tarfile.open("path_to/test/sample.tar.bz2", "r:bz2")  
tar.extractall()
tar.close()

or

import tarfile
tar = tarfile.open("path_to/test/sample.tar.bz2", "r:bz2")  
for i in tar:
  tar.extractfile(i)
tar.close()

Если вам нужно извлечь файлы в определенную папку

import tarfile
tar = tarfile.open("path_to/test/sample.tar.bz2", "r:bz2")  
tar.extractall(some_path)
tar.close()
person kvorobiev    schedule 02.04.2015
comment
Спасибо. Но я попробовал оба ваших решения, но результат тот же: ничего не происходит. - person Julien; 02.04.2015

Мне нравится контекстный менеджер:

import tarfile

def extract_bz2(filename, path="."):
    with tarfile.open(filename, "r:bz2") as tar:
        tar.extractall(path)
person mja    schedule 11.04.2018