Я разбиваю 4-х гигабайтный файл данных из Викисловаря XML на небольшие файлы, не накладываясь, обрабатывая его с помощью Python и сохраняя отдельные страницы (...).Разделение файла резко увеличивает его размер.
Такая же информация, разделенная на разные файлы, раздувается до 18+ ГБ.
Почему это может быть? И есть ли способ избежать этого?
import os
import re
import subprocess
subprocess.call(['mkdir', 'WIKTIONARY_WORDS_DUMP'])
# English Wiktionary (which noneless contains many foreign words!)
f = open('enwiktionary-20151020-pages-articles.xml', 'r')
page = False
number = 1
for i, l in enumerate(f):
if '<page>' in l:
word_file = open(os.path.join('WIKTIONARY_WORDS_DUMP', str(number)+'.xml'), 'a')
word_file.write(l)
page = True
number += 1
elif '</page>' in l:
word_file.write(l)
word_file.close()
page = False
elif page:
word_file.write(l)
word_file.close()
f.close()
ли новые файлы сериализованы по-другому и/или другую кодировку? На самом деле это было бы единственным объяснением. (Кроме того, могу ли я предположить, что вместо разделения файла вы рассматриваете его обработку с помощью анализатора SAX?) – Tomalak
Не думайте так. Когда я запускаю файл -bi на wiktionary.xml и на entry.xml возвращают текст/html; charset = utf-8 – zadrozny
Вы открываете маленькие файлы с помощью режима 'a' (добавить). Если вы запускаете эту программу во второй раз, пока файлы все еще существуют, исходная информация снова записывается в файл. –