Python: игнорировать EOF в XML-файле

#python #eof #wikipedia #dump #bz2

#python #eof #википедия #дамп #bz2

Вопрос:

В настоящее время я работаю над проектом, который включает получение заголовков статей из дампа Википедии. Загружаемый файл имеет формат .bz2 и содержит XML-файл размером около 80 ГБ, если бы я его распаковал.

Я могу открыть и прочитать первые несколько строк с помощью Python, но мой скрипт перестает читать после 43 строк. После этого запускается первая страница статьи. Я предполагаю, что между страницами есть EOF.

Есть ли какой-нибудь способ проигнорировать это и продолжить чтение? Я действительно не хочу ни сжимать его, ни изменять файл извне.

Мой код выглядит похожим на это:

 import bz2

dump = bz2.BZ2File(path, "r")
i = 0
for line in dump:
   print(type(line))
   print(line)
   if i <= 1000:
      i =1
   else:
      break
     
dump.close()
  

Комментарии:

1. Помогает ли установка режима чтения в двоичный файл? Довольно странно находить явный символ EOF внутри (предположительно) допустимого XML-файла …

2. Не помогло. Я также попытался указать кодировку. Это привело к ошибке сегментации.

3. Я не могу себе этого представить, поскольку: EOF не является символом. ruslanspivak.com/eofnotchar