2015-11-15 2 views
1

Мне нужно извлечь некоторые текстовые файлы, сжатые в .xz файлы с помощью python.Не удается извлечь файлы .xz с python «tarfile.ReadError: файл не может быть успешно открыт»

Мой код просто

import tarfile 

tarfile.open('file.xz') 

Но это терпит неудачу с ошибкой

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python3.4/tarfile.py", line 1558, in open 
    raise ReadError("file could not be opened successfully") 
tarfile.ReadError: file could not be opened successfully 

Я попытался это на многих .xz файлов и получил тот же результат. Файлы .xz не разбиты и могут быть открыты с помощью менеджера архивов gnome.

Я искал проблему и нашел this bug report, но я не уверен, что попробовать сейчас.

+0

Если не быть : 'tarfile.open ('file.xz')' – hjpotter92

+1

Является файлом '.tar.xz' или просто' .xz'? – falsetru

+0

@ hjpotter92 Да, должно быть. У моего фактического кода был « – Qwertie

ответ

2

Если это не .tar.xz файл, но .xz файл, вам нужно использовать lzma module, не tarfile модуль:

import lzma 

with lzma.open("file.xz") as f: 
    file_content = f.read() 

Чтобы сохранить извлеченное содержимое:

with lzma.open("file.xz") as f, open('extracted', 'wb') as fout: 
    file_content = f.read() 
    fout.write(file_content) 
+0

А, я вижу. Меня это перепутало, потому что [этот вопрос] (https://stackoverflow.com/questions/17217073/how-to-decompress-a-xz-file-which-has-multiple-folders-files-inside-in-a -singl) использует tarfile, но я вижу, где они используют tar.xz – Qwertie

+0

@ Qwertie, Ah .. еще один ответ от меня;) – falsetru

+0

Только один последний вопрос. Как сохранить файл после извлечения, потому что extractall ('.') Больше не работает. – Qwertie

Смежные вопросы