我正在编写一个python脚本来查找XML文件中的各种标记,并且如果找不到特定标记(表示我们的元数据不完整),则希望发出警告。这适用于只有一个实例的元素:
try:
element = tree.find("idinfo/descript/abstract")
if element is None:
print "(!) No description/abstract in file"
print "ABSTRACT: {}".format(element.text)
except:
print "(!) No description/abstract found"
此循环适用于查找所有procdate
元素,但在没有任何错误消息时,不会给出“if None”或“except”警告版本。< / p>
try:
for element in tree.findall("dataqual/lineage/procstep/procdate"):
if element is None:
print "(!) No revision date in file"
print "REVISION DATE: {}".format(element.text)
except:
print "(!) No revision date found"
[如果我不能主动标记为空的东西,这不是什么大问题,但能够提醒用户会很高兴...]
答案 0 :(得分:2)
如果未找到任何内容,findall()
将返回一个空列表。首先测试:
results = tree.findall("dataqual/lineage/procstep/procdate")
if not results:
print "(!) No revision date found"
else:
for element in results:
print "REVISION DATE: {}".format(element.text)
not results
就足够了,因为空容器在布尔上下文中测试为false。