Ich versuche, XML-Dateien einzeln im Verzeichnis zu verarbeiten. Grundsätzlich lesen Sie die Werte und füllen Sie dann die CSV-Datei. Ich habe Probleme, jedes XML einzeln zu analysieren. Problem mit meinem Code ist csvWriter.writerow nur die Werte aus der letzten XML-Datei in das Verzeichnis schreiben. Auch ich habe eine Schleife für alle Elemente im Stamm von ElementTree.parse (Pfad). Ich möchte, dass es jede Zeile für jede XML-Datei im Verzeichnis schreibt.Schleife durch Variable mit os.path.join
from lxml import etree as ElementTree
import csv
import os
import errno
import shutil
def writeData(item):
csvFile = open('D:\\metadata.csv', 'w', newline='')
csvWriter = csv.writer(csvFile, delimiter='|',
lineterminator='\n')
csvWriter.writerow([
'type',
'object',
'title',
'subject',
'domain',
'name',
'_name',
'version_label',
'creator_name',
'creation_date',
'modifier',
'modify_date',
'content_type',
'chronicle_id',
'antecedent_id',
'activity_date',
'search_from_date',
'number',
'service_code',
'initial_inspection_date',
'search_to_date',
'File Name',
'Location',
])
csvWriter.writerow([
root[0][0].text,
root[0][1].text,
root[0][2].text,
root[0][3].text,
root[0][4].text,
root[0][5].text,
root[0][6].text,
root[0][7].text,
root[0][8].text,
root[0][9].text,
root[0][10].text,
root[0][11].text,
root[0][12].text,
root[0][13].text,
root[0][14].text,
root[0][15].text,
root[0][16].text,
root[0][17].text,
root[0][18].text,
root[0][19].text,
root[0][20].text,
root[2].text,
root[1].text,
])
csvFile.close()
for file in os.listdir('D:\\temp\\Export\\test'):
if file.endswith('.xml'):
path = os.path.join('D:\\temp\\Export\\test', file)
tree = ElementTree.parse(path)
#print(tree)
root = tree.getroot()
#print(root)
for item in root:
print(item)
writeData(item)
Danke, aber ... Erste Fehler Traceback (jüngste Aufforderung zuletzt): Die Datei "extractMetadata.py", Zeile 70, in writedata (csv_writer, item) file "extractMetadata.py", Zeile 11, in writedata csvWriter.writerow ([ Nameerror: name 'csvWriter' nicht –
user1457821
Woops definiert ist Mein Fehler, ich habe 'csvWriter' in' csv_writer' in letzter Minute umbenannt und anscheinend eine Variable vergessen. Ich habe meine Antwort bearbeitet. –
Danke noch eine Änderung, die ich gemacht habe ... tatsächlich ly wir brauchen keine zweite schleife "für item in root:" seine duplizieren die daten. Weißt du, Kopfzeile nur einmal zu machen? – user1457821