Разделение файла значительно увеличивает его размер

Я разбиваю дамп данных 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>
Другие вопросы по тегам