0

我正在尝试使用 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 文件的功能。谢谢大家为此!!!

4

0 回答 0