Я сейчас работаю с Семантически обогащенной Википедией .
Ресурс находится внутри 7,5 ГБ tar.gz архива и каждый файл в нем, это XML, схема которого:
<text>
Plain text
</text>
<annotation>
Annotation for plain text
</annotation>
Текущая задача состоит в том, чтобы извлечь каждый файл, а затем проанализировать содержимое внутри тегов.
Первым делом я использовал модуль tarfile и его метод extractall () , но во время извлечения я получил эту ошибку:
OSError: [Errno 22] Invalid argument: '.\\sew_conservative\\wiki384\\Live_%3F%21*%40_Like_a_Suicide.xml'
в то время как его часть извлекается правильно (я думал, что ошибка была из-за символа unicode внутри имени файла xml, но теперь я вижу, что каждый файл имеет его внутри).
Поэтому я планировал поработать над каждым файлом в архиве, используя некоторые методы API и приведенный ниже код.
К сожалению, объект TarInfo , который упаковывает каждый файл, не не позволяют получить доступ к содержимому файла, а извлечение, файл за файлом, занимает слишком много времени.
def parse_sew():
sew_path = Path("C:/Users/beppe/Desktop/Tesi/Semantically Enriched Wikipedia/sew_conservative.tar.gz")
with tarfile.open(sew_path, mode='r') as t:
for item in t:
// extraction
Обязательно ли извлечение для анализа и использования содержимого файла XML или возможно читать содержимое архива (на лету, ничего не распаковывая), а затем анализировать содержимое?
ОБНОВЛЕНИЕ: Я извлекаю файлы с помощью tar -xvzf filename.tar.gz команда, все идет хорошо, но через 15 мин s Я смог обработать только 500 МБ из ста ГБ.