【发布时间】:2011-07-20 22:13:49
【问题描述】:
我正在尝试在一个特定目录中打开一个包含一系列 XML 的目录。
在下面的代码中,我将遍历每个 XML 文档,并设置一些“if 语句”来读取 XML 中的文本、查找关键字并替换它们,然后将新文件写入新位置。
运行脚本时出现以下错误:
Traceback info:
File "Z:\ESRI\Python\Test Scripts\ElementTree6.py", line 62, in <module>
if "%begdate%" in element.text:
...
错误信息:
argument of type 'NoneType' is not iterable
我已将目录硬编码为一个特定的 XML,当我运行 if 语句时,它们工作正常。
当我尝试设置以迭代一系列 XML 时,我遇到了错误。
我搜索了这个网站,看看我是否可以找到解决方案,但所有问题要么与我的不同,要么我不太了解解决方法。
我使用了许多打印行来测试输出。
一切正常,直到我到达 if 语句然后出现错误。
# Location of XML's
folderPath = r"Z:\data"
# set variable to store files with extension ".xml"
for filename in glob.glob(os.path.join(folderPath, "*.xml")):
fullpath = os.path.join(folderPath, filename)
# find files and split the filename from the directory path
if os.path.isfile(fullpath):
basename, filename2 = os.path.split(fullpath)
#print "Basename = " + basename
#print "Filename = " + filename2
# set variable to store XML structure from xml file
root = ElementTree(file=r"Z:\data\\" + filename2)
#Create an iterator
iter = root.getiterator()
#Iterate
for element in iter:
#print element.text
if "%begdate%" in element.text:
BEGDATE = element.text.replace("%begdate%", BEGDATEPARAM)
element.text = BEGDATE
【问题讨论】:
-
这不会按书面形式编译 - 我认为您的意思是有问题的行左侧有 4 个空格,与注释掉的
print element.text对齐。顺便说一句,当您取消注释时,您看到了什么?
标签: python xml loops elementtree