Я пытаюсь читать много bz2 файлов в архивный файл, файл имеет следующую структуру:Чтение отдельных bz2 файлов из дегтя файла
2013-01.tar
01\01\00\X.json.bz2\X.json
01\01\02\X.json.bz2\X.json
Я могу получить имена файлов следующим образом:
import tarfile
tar = tarfile.open(filepath, 'r')
tar_members_names = [filename for filename in tar.getnames()]
# Side question: How would I only return files and no directories?
который возвращает список .bz2 файлов. Теперь я пытаюсь извлечь их (временно) с помощью:
inner_filename = tar_members_names[0]
t_extract = tar.extractfile(inner_filename)
Следующий код для извлечения файла JSon возвращает ошибку, однако. Как я могу найти файлы JSON по строкам?
import bz2
txt = bz2.BZ2File(t_extract)
TypeError: coercing to Unicode: need string or buffer, ExFileObject found
txt = bz2.decompress(t_extract)
TypeError: must be convertible to a buffer, not ExFileObject
Я не мог понять, как вернуть буфер из гудрона файла вместо текущего ExFileObject (как преобразовать его в буфер?), Любые предложения очень ценятся.
как ошибка говорит, вы передаете ExFileObject, а не строку или объект TarInfo, например, «extractfile» ожидает. –