1-я готов иметь код, который конвертирует де XML файл в CSV.Но на самом деле мне нужно делать эту операцию много раз, а затем необходимо каждый раз менять имя XML-файла в моей программе. Я хочу сделать цикл, чтобы прочитать каждый «XML-файл» в папке и сделать длявесь файл.есть мой исходный код
import xml.etree.ElementTree as ET
import csv
tree = ET.parse("Shot_30AA.xml")
root = tree.getroot()
Shot_30AA = open('Shot_30AA.csv', 'w', newline='')
csvwriter = csv.writer(Shot_30AA)
head = []
ShotCode = root.attrib['ShotCode']
csvwriter.writerow(['ShotCode', ShotCode])
head.append(ShotCode)
for member in root.getchildren():
submembers = member.getchildren()
keys = submembers[0].attrib.keys()
csvwriter.writerow ("\n")
csvwriter.writerow(keys)
for submember in submembers:
row_data = [submember.attrib[k] for k in keys]
csvwriter.writerow(row_data )
Shot_30AA.close()
Я попытался выполнить эту операцию в папке с файлами, добавив следующий код для выполнения только один раз
path = 'C:/Users/Desktop/Program'
for filename in os.listdir(path):
if not filename.endswith('.xml'): continue
ShotFile = os.path.join(path, filename)
tree = ET.parse(ShotFile)
root = tree.getroot()
filename = open( filename'.csv', 'w', newline='')
csvwriter = csv.writer(filename)
head = []
ShotFile = open('ShotFile.csv', 'w', newline='')
csvwriter = csv.writer(Shot_30AA)
head = []
ShotCode = root.attrib['ShotCode']
csvwriter.writerow(['ShotCode', ShotCode])
head.append(ShotCode)
for member in root.getchildren():
submembers = member.getchildren()
keys = submembers[0].attrib.keys()
csvwriter.writerow ("\n")
csvwriter.writerow(keys)
for submember in submembers:
row_data = [submember.attrib[k] for k in keys]
csvwriter.writerow(row_data )
ShotFile.close()
Я ожидаю получить все свои файлы вCSV-формат с одним прогоном.