Итак, в основном у меня есть такая файловая система:
main_archive.tar.gz
main_archive.tar
sub_archive.xml.gz
actual_file.xml
В этом архиве сотни файлов ... Так что в принципе можно ли использовать пакет gzip
с несколькими файлами в Python 3?Я использовал его только с одним заархивированным файлом, поэтому я не знаю, как просмотреть несколько файлов или несколько уровней «заархивирования».
Мой обычный метод распаковки:
with gzip.open(file_path, "rb") as f:
for ln in f.readlines():
*decode encoding here*
Конечно, у этого есть несколько проблем, потому что обычно "f" - это просто файл ... Но теперь я не уверен, что он представляет?
Любая помощь / совет будет высоко ценится!
РЕДАКТИРОВАТЬ 1:
Я принял ответ ниже, но если вы ищете похожий код, моя магистраль была в основном:
tar = tarfile.open(file_path, mode="r")
for member in tar.getmembers():
f = tar.extractfile(member)
if verbose:
print("Decoding", member.name, "...")
with gzip.open(f, "rb") as temp:
decoded = temp.read().decode("UTF-8")
e = xml.etree.ElementTree.parse(decoded).getroot()
for child in e:
print(child.tag)
print(child.attrib)
print("\n\n")
tar.close()
Основные используемые пакетыбыли gzip
, tarfile
и xml.etree.ElementTree
.