Разделение файла значительно увеличивает его размер
Я разбиваю дамп данных Wiktionary XML размером 4 ГБ на более мелкие файлы без наложения, обрабатываю его с помощью 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()
1 ответ
Файлы меньшего размера также сохраняются как XML с той же иерархией тегов? Если это так, вы обязательно должны иметь некоторое повторение тегов.
то есть, если вы хотите разделить этот файл:
<root>
<item>abc</item>
<item>def</item>
<item>ghi</item>
</root>
в три отдельных файла:
<root>
<item>abc</abc>
</root>
<root>
<item>def</abc>
</root>
<root>
<item>ghi</abc>
</root>
<root>
тег повторяется в каждом меньшем файле.
Будет хуже, если ваша схема данных будет более сложной:
<root>
<level1>
<level2>
<level3>
<item>abc</item>
</level3>
</level2>
</level1>
</root>