|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.04.2024, 18:03 | #1 |
Пользователь
Регистрация: 22.09.2014
Сообщений: 27
|
Чтение огромных xml-файлов
Добрый день!
У меня есть код по превращению xml-файла в DataFrame: ColNames = ['ObjectId','DateEnd','ZagolType','Z agolValue1'] df_list = [] tstep = 0 for fl in ListFxml2: if '_houses_params' in fl.lower(): tree = ET.parse(Pxml + '/' + fl) root = tree.getroot() for level in root: row = [level.attrib['OBJECTID'],level.attrib['ENDDATE'],level.attrib['TYPEID'],level.attrib['VALUE']] df_list.append(row) else: pass DFhouseParam = pd.DataFrame(df_list, columns=ColNames) Этот код хорошо отрабатывает на файле, весом 1,7гб. Но на файле 3,77гб подвисает на шаге tree = ET.parse(Pxml + '/' + fl), и процедура в итоге вылетает (автоматически перезагружается kernel). Подскажите, пожалуйста, как ещё можно прочитать в Python такой огромный xml-файл? Или как его можно раздробить (без ET.parse)? Буду очень благодарен за помощь! |
08.07.2024, 02:04 | #2 |
Форумчанин
Регистрация: 10.01.2020
Сообщений: 107
|
Kapkom,
Есть несколько способов чтения больших XML-файлов в Python без использования ET.parse(), который может потреблять много памяти и приводить к ошибкам нехватки памяти для больших файлов. Один из способов — использовать потоковый парсер, такой как xml.sax.parse(). Потоковые парсеры обрабатывают XML-файл построчно, что позволяет читать большие файлы без загрузки всего файла в память. Вот пример кода, который использует xml.sax.parse() для чтения большого XML-файла: Код:
Код:
Еще один способ чтения больших XML-файлов — использовать библиотеку xmltodict. Эта библиотека преобразует XML-файл в словарь Python, который затем можно преобразовать в DataFrame. Вот пример кода, который использует xmltodict для чтения большого XML-файла: Код:
Наконец, вы также можете разбить большой XML-файл на более мелкие файлы. Это можно сделать с помощью таких инструментов, как split, csplit или xxd. После разделения файла вы можете обработать каждый меньший файл отдельно. Надеюсь, это поможет! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чтение и запись бинарных файлов огромных размеров без использования массивов | Kol1k | C# (си шарп) | 1 | 28.06.2021 09:27 |
Сравнение огромных (невероятно огромных) чисел | Scrzii | Помощь студентам | 4 | 25.11.2018 20:56 |
чтение файлов .xml | aldeano | Microsoft Office Excel | 4 | 14.12.2013 18:18 |
чтение wav файлов | asdbsa | Общие вопросы C/C++ | 2 | 21.10.2013 12:15 |
чтение ini файлов | Sparky | Помощь студентам | 2 | 21.05.2012 16:48 |