Я пытаюсь получить данные из XML-файлов, используя 1 XML-файл, мой код работает, и у меня есть все данные, которые мне нужны, но когда я пытаюсь заставить мой код работать с использованием различных XML-файлов, это не удается, все XML имеют одинаковые элементы и одинаковые позиции.
Я пытался использовать glob и list dir с os, но он не работает, и когда я запускаю python .py из терминала, я ничего не возвращаю.
Мой рабочий код только для одного XML-файла:
import xml.etree.ElementTree as ET
tree = ET.parse('provaDmarcXml2.xml')
root = tree.getroot()
org_name = root[0][0].text
domain = root[1][0].text
LlistaSource_ip = []
LlistaDkim = []
LlistaSpf = []
for source_ip in root.iter('source_ip'):
sourceIp = source_ip.text
LlistaSource_ip.append(sourceIp)
for dkim in root.findall("./record/row/policy_evaluated/dkim"):
Dkim = dkim.text
LlistaDkim.append(Dkim)
for spf in root.findall("./record/row/policy_evaluated/spf"):
Spf = spf.text
LlistaSpf.append(Spf)
for c in range(len(LlistaSource_ip)):
print (org_name,"\t",end = "")
print (domain,"\t",end='')
print (LlistaSource_ip[c],"\t", end="")
print (LlistaDkim[c],"\t", end="")
print (LlistaSpf[c],"\t", end="")
print()
Мой код не работает при попытке проанализировать несколько XML-файлов в одном каталоге.
from os import listdir
import xml.etree.ElementTree as ET
for file in listdir("path to directory"):
with open(file, "rb"):
tree = ET.parse(data)
root = tree.getroot()
org_name = root[0][0].text
domain = root[1][0].text
LlistaSource_ip = []
LlistaDkim = []
LlistaSpf = []
for source_ip in root.iter('source_ip'):
sourceIp=source_ip.text
LlistaSource_ip.append(sourceIp)
for dkim in root.findall("./record/row/policy_evaluated/dkim"):
Dkim = dkim.text
LlistaDkim.append(Dkim)
for spf in root.findall("./record/row/policy_evaluated/spf"):
Spf = spf.text
LlistaSpf.append(Spf)
for c in range(len(LlistaSource_ip)):
print()
Ожидаемые результаты:
данные данные данные данные
данные данные данные данные
данные данные данные данные
данные данные данные данные
из всех файлов
ошибка, которую я получаю:
Traceback (последний вызов был последним):
Файл "provaxmlPrograma2.py", строка 10, в
дерево = ET.parse (данные)
NameError: имя 'data' не определено
или мне ничего не вернется, если я исправлю это.