我有一个脚本,它获取一个XML文件文件夹,在其中搜索特定元素,然后将元素的内容(监视器ID和摄像机ID)打印到CSV。很简单,但是CSV中的数据存在重复问题
看起来,这是CSV中重复数据的次数,取决于MatrixSwitch元素中找到的项目数
假设XML只有1个“监视器”和1个“照相机”,此数据将被复制2次。如果下一个文件各有3个,总共6个,则将重复6次
以下是脚本:
import csv
import glob
import xml.etree.ElementTree as ET
filenames = glob.glob("..\Lib\macros\*.xml")
for filename in filenames:
with open(filename, 'r') as content:
element = ET.parse(content)
root = element.getroot()
print(root.attrib, filename)
e = element.findall('commands/MatrixSwitch/')
for i in e:
print (i.tag, i.text)
with open('results.csv', 'a', newline='') as file:
writer = csv.writer(file)
writer.writerow([root.attrib, filename])
for i in e:
writer.writerow([i.tag, i.text])
我打印了“文件名”以查看这是否是导致问题的原因,但似乎不是,列表中没有显示重复的文件名
CSV中显示的每个XML文件的预期输出如下所示: https://imgur.com/a/SrPrgjm
很明显,其中一个循环不知怎么搞砸了,但我正在努力找到它
示例XML文件:
<macro name="NAME OF THE MACRO IS SHOWN HERE">
<execution>
<delay>0</delay>
</execution>
<parameters/>
<commands>
<MatrixSwitch>
<camera>1530</camera>
<monitor>1020</monitor>
</MatrixSwitch>
<MatrixSwitch>
<camera>1531</camera>
<monitor>1001</monitor>
</MatrixSwitch>
</commands>
</macro>
另一个:
<macro name="ANOTHER NAME GOES HERE">
<execution>
<delay>0</delay>
</execution>
<parameters/>
<commands>
<MatrixSwitch>
<camera>201</camera>
<monitor>17</monitor>
</MatrixSwitch>
<MatrixSwitch>
<camera>206</camera>
<monitor>18</monitor>
</MatrixSwitch>
<MatrixSwitch>
<camera>202</camera>
<monitor>19</monitor>
</MatrixSwitch>
<MatrixSwitch>
<camera>207</camera>
<monitor>20</monitor>
</MatrixSwitch>
</commands>
</macro>
由于嵌套循环,我现在有以下内容,似乎可以正常工作:
import csv
import glob
import xml.etree.ElementTree as ET
filenames = glob.glob("..\Lib\macros\*.xml")
for filename in filenames:
with open(filename, 'r') as content:
element = ET.parse(content)
root = element.getroot()
print(root.attrib, filename)
e = element.findall('commands/MatrixSwitch/')
with open('results.csv', 'a', newline='') as file:
writer = csv.writer(file)
writer.writerow([root.attrib, filename])
for i in e:
print (i.tag, i.text)
writer.writerow([i.tag, i.text])
目前没有回答
相关问题 更多 >
编程相关推荐