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 出力ファイルの 1 行に入れようとしていることです。たとえば、選択したフォルダーに S1.xml、S2.xml、C1.xml、C2.xml があり、S1.xml と C1.xml のデータを出力ファイルの 1 行に配置したいとします。私の出力ファイルは単純な *.csv ファイルで、行と列を自分で定義して Excel で開きたいと考えています。
現在、S1.xml から出力までのすべての TAG を解析でき、正常に動作しますが、選択したフォルダー内のすべてのファイルとディレクトリをウォークスルーして C1.xml を解析しようとすると、for ループで問題が発生し、出力パラメータ。「割り当て前に参照されたローカル変数 'column1'」を表示しています。
Python を使用して複数の *.xml ファイルを 1 つのフォルダーに連結することは可能ですか。または、*.xml ファイルを解析するためのより優れた機能があります。ありがとうございます!