我正在尝试使用 Python ElementTree 解析多个 xml 文件。我的部分代码如下:
dirSelected = tkFileDialog.askdirectory()
# User names the output csv file
csvFile = raw_input('Enter the name for the result csv file ')
csvFile = csvFile + ".csv"
resultCSV = open(csvFile, "w+")
# Formation of a long string that becomes the header of the csv file
resultCSV_header = 'header,' + 'header2,'
print (resultCSV_header, file = resultCSV)
for root, dirs, files in os.walk(dirSelected):
for fi in files:
#parse S1.xml files
if (fi.endswith('.xml') and fi.startswith('S')):
filePath = os.path.join(root, fi)
#Parse XML directly from the file path
tree = ET.parse(filePath)
#Get the root node
doc = tree.getroot()
column1 = doc.find('.//TAG1').text
...
resultCSV_recipe = (column1 + "," + column2 + ...)
print (resultCSV_xml)
print (resultCSV_xml, file=resultCSV)
我的问题是我试图解析多个 *.xml 文件并将数据放入 *.csv 输出文件的一行。例如,我在所选文件夹中有 S1.xml、S2.xml、C1.xml、C2.xml,我希望将 S1.xml 和 C1.xml 中的数据放入输出文件的一行中。我的输出文件是一个简单的 *.csv 文件,我希望用 Excel 打开它,其中的行和列由我自己定义。
我目前可以将所有标签从 S1.xml 解析到输出,并且工作正常,但是当我尝试通过遍历所选文件夹中的所有文件和目录来解析 C1.xml 时,我在 for 循环中遇到了一些问题,并且输出参数。显示“赋值前引用的局部变量 'column1'”。
是否可以使用 Python 在一个文件夹中连接多个 *.xml 文件。或者有更好的解析 *.xml 文件的功能。谢谢大家为此!!!