#python #xml #elementtree
#python #xml #elementtree
Вопрос:
Я начинаю с большого XML-файла и пытаюсь создать новый файл только с теми элементами, которые мне нужны (один из них содержит определенный серийный номер). У меня почти все работает, единственная проблема заключается в том, что, когда я иду записывать элементы в новый файл, кажется, что он снова и снова перезаписывает себя, и в итоге я получаю только последний элемент, напечатанный в файле. Как я могу сделать так, чтобы при записи следующего элемента в файл он запускался после предыдущего? Я думаю о каком-то количестве строк и вставке, я просто не знаю, как это отформатировать.
Вот мой цикл, который находит нужные мне элементы и записывает их в файл:
for child in root:
for element in child:
if element.tag == 'DeviceId':
if element.text == 'NS-00-00000':
f = open('new_3.log','w')
p = (ET.tostringlist(child, encoding='unicode', pretty_print=True))
print(p)
f.write('n'.join(p))
f.close()
Спасибо!
Комментарии:
1. Откройте файл перед запуском цикла и закройте его после завершения цикла.
2. как и во всем пути снаружи к оператору top for? Должен ли я закрыть его в цикле или удалить? Спасибо
3. Да, перед самым внешним
for
циклом. И закройте его после завершения этого цикла.4. Спасибо, что сработало! Не могли бы вы объяснить, почему это все исправляет?
5. Открытие файла в
'w'
режиме mode уничтожает существующее содержимое. Итак, вы хотите сделать это только один раз.