从 Python 中具有相同文件扩展名的多个文件的目录中读取文件

Read File From Directory with Multiple Files of the Same File Extension in Python

我正在尝试使用 Python 解析位于下面显示的文件路径中的特定 XSD 文件 (File1.xsd),但该文件路径中有多个文件相同的文件扩展名(File2.xsd 和 File3.xsd)。 File1.xsd 将用于根据 File1.xsd 模式验证 xml,但我无法仅解析这个 XSD 文件的文件路径(根据 "xml_validator" 功能)。

有谁知道如何 tweak/enhance 仅查找 File1.xsd 的代码,否则将相同的技术应用于具有相同文件扩展名的多个文件的目录 - 输出将是一个布尔值根据 "is_valid" 函数的表达式,非常感谢任何帮助!

import os
import glob
import lxml
from lxml import etree
from lxml.etree import XMLSchema
import xmlschema

path = "C:\Users\mdl518\Desktop\Data\"

def validation():
    for filename in glob.glob(os.path.join(path, "*.xml")):
        with open(filename,'r') as f: 
            xml_file=lxml.etree.parse(f)
            xml_validator=lxml.etree.XMLSchema(file="<path_to_File1.xsd">))
            is_valid=xml_validator.validate(xml_file)
            print(is_valid)
        return

validation()

将 xml_validator 行替换为: xml_validator=lxml.etree.XMLSchema(os.path.join(路径,filename.replace(".xml",".xsd")))

我假设你的文件名最后只包含字符串“.xml”,如果你有像"my.xmlfile.xml"这样的文件名,你应该只替换最后一个“.[=20=” ]”实例。

您可以打开您需要的文件作为验证器 (File1.xsd),解析它,然后遍历 .xml 个文件:

path = "C:\Users\mdl518\Desktop\Data\"

def validation():
    with open(f"{path}File1.xsd", 'r') as filxsd:
         xml_validator = XMLSchema(file=filxsd)
    for fil in glob.glob(f"{path}*.xml"):                 
        with open(fil, 'r') as f: 
            xml_file = lxml.etree.parse(f)
            is_valid = xml_validator.validate(xml_file)
            print(is_valid)