【发布时间】:2015-09-18 17:16:24
【问题描述】:
我正在工作并尝试制作一个脚本,该脚本仅将选定的 xml 添加到新创建的 xml 文件(来自 csv)中。这是我到目前为止所得到的......为格式化道歉
从 csv 创建脚本 - 有效:
if len(sys.argv) != 2:
os._exit(1)
path=sys.argv[1] # get folder as a command line argument
os.chdir(path)
csvFiles = [f for f in os.listdir('.') if f.endswith('.csv') or f.endswith('.CSV')]
for csvFile in csvFiles:
xmlFile = csvFile[:-4] + '.xml'
等等。 (xml是在我的csv脚本之后创建的..) 现在我想从同一目录中的 xml 追加到新创建的 xml 文件的末尾..
将 xml 追加到新脚本中 - 失败!
xmlFiles = [x for x in os.listdir('.') if x.endswith('.xml') or f.endswith('.XML')]
for xmlFile in xmlFiles:
tree = ET.parse(xmlFile)
Meta = tree.getroot()
a = Meta.find('Speaker')
a1 = Meta.find('Device')
b = ET.SubElement(a, 'speaker')
c = ET.SubElement(b, 'device')
for i in range(len(tags)):
tags[i] = tags[i].replace(' ', '_')
else:
xmlData.write('<row>' + "\n")
for i in range(len(tags)):
xmlData.write(' ' + '<' + tags[i] + '>' \
+ row[i] + '</' + tags[i] + '>' + "\n")
xmlData.write('</row>' + "\n")
rowNum +=1
xmlData.write('</csv_data>' + "\n")
xmlData.close()
print ET.tostring(Meta)
另外,如果有更好、不同的方法和参考,我会很高兴:) 谢谢
【问题讨论】:
-
我刚刚回复了similar question。创建第一个 XML 后,使用 XSLT 通过 Python 的 lxml 模块与其他 XML 文档进行合并,无需在代码中手动重新创建。
-
您似乎遗漏了一些进入外部 for 循环的代码,可能是
if语句。
标签: python xml csv elementtree