我无法在python代码中解决问题,我需要一些提示。
事实是,如果我使用的代码没有for循环,则直接使用
tree = etree.parse('filename.xml', parser=parser)
一切正常。当我尝试为file
分配一个变量来迭代目录内的文件名时,代码挂起,出现以下错误:
回溯(最近一次通话最后一次):文件“ /home/eikaf/test.py”,行 45,在 ragsocemittente = root.find('.// FatturaElettronicaHeader // CedentePrestatore // DatiAnagrafici // Anagrafica // Denominazione') AttributeError:'NoneType'对象没有属性'find'
path = '/home/eikaf/xml'
for dirpath, dirnames, filenames in os.walk(path):
for file in filenames:
#print(file)
#print(filenames)
tree = etree.parse(file, parser=parser)
root = tree.getroot()
ragsocemittente = root.find('.//FatturaElettronicaHeader//CedentePrestatore//DatiAnagrafici//Anagrafica//Denominazione')
if ragsocemittente is None:
ragsocemittente = ''
ragsocemittentecognome = root.find('.//FatturaElettronicaHeader//CedentePrestatore//DatiAnagrafici//Anagrafica//Cognome')
ragsocemittentenome = root.find('.//FatturaElettronicaHeader//CedentePrestatore//DatiAnagrafici//Anagrafica//Nome')
#print("Ragione Sociale Emittente " + ragsocemittentecognome.text + " " + ragsocemittentenome.text)
ragsocemittentegiust = str(ragsocemittentecognome.text + " " + ragsocemittentenome.text).ljust(32)
else:
#print("Ragione Sociale Emittente: " + ragsocemittente.text)
ragsocemittentegiust = str(ragsocemittente.text).ljust(32)
print(ragsocemittente.text)
答案 0 :(得分:0)
我的猜测是目录中至少有一个文件不是有效的XML文件。您只需将filename.xml保留在目录中就可以运行相同的代码(带有for循环)?
答案 1 :(得分:0)
是的,并且有效。如果我将file
中的filename.xml
替换为tree = etree.parse(file, parser=parser)
,则对于目录中存在的“ n”个文件,我可以获得相同的结果。