Как я могу перебрать каждый файл в каталоге, используя функцию ET.parse

Когда я запускаю приведенный ниже код, я могу успешно проанализировать только один xml-файл (используя назначенный xslt-файл) из моей исходной папки (обозначенной «myfilepath» ниже). И это несмотря на то, что в этой исходной папке 10 файлов xml.

Я пробовал и os.dir и glob, но ни один из них не проходит через каждый XML-файл в папке.

Любая помощь будет оценена!

import lxml.etree as ET
import pandas as pd
import glob 

xml_path = (/"myfilepath")
xslt = (/"myfilepath/results_stylesheet.xsl")


#routine to define pathway to open multiple files

xml_files = glob.glob(xml_path + "/*.xml")
cntr = 1

#perform our parsing operations on all xml files in the named xml_file path above 
for file in xml_files:

            with open(xml_files, 'r', encoding="utf-8") as content:  
                data = open(xslt)
                xslt_content = data.read()
                xslt_root = ET.XML(xslt_content)
                transform = ET.XSLT(xslt_root)
                for file in xml_files:
                    dom = ET.parse(content)
                    result = transform(dom)

with open("Parsed" + str(cntr) + '.csv','w')as outputfile:
    outputfile.write(str(result))
    outputfile.close()
    cntr +=1

Мне бы хотелось, чтобы код просматривал каждый XML-файл в исходной папке, анализировал с помощью таблицы стилей xslt, а затем сохранял проанализированный файл в новом CSV-файле в той же папке, что и исходная папка. Я хотел бы, чтобы каждый анализируемый файл имел соглашение об именах, например "Parsed1.csv", "Parsed2.csv" и т. Д.

Всего 1 ответ


В вашей пасте намерение выглядит неправильно. Как запись вывода находится вне цикла for xml_files.


Есть идеи?

10000