为了账号安全,请及时绑定邮箱和手机立即绑定

解析同一文件夹中的多个 XML 文件

解析同一文件夹中的多个 XML 文件

胡子哥哥 2021-12-17 16:21:43
我正在尝试解析存储在同一文件夹中的多个 XML 文件。xml 文件具有相同的格式。我想要做的是解析 xml 文件并将它们复制到另一个文件夹中,以便以后处理它们。XML 文件如下所示:<Racing type="Race">  <Meeting sport="HH" meetingCode="349083" track="Lol" country="GB">    <Race result="true" Available="true" raceNumber="13" id="13" revision="1" state="Final Result">      <Result status="Final Result">        <Position name="Foo" btnDistance="XX"/>        <Position name="Ok" btnDistance="1"/>        <Position name="Done" btnDistance="2"/>      </Result>    </Race>  </Meeting></Racing>到目前为止,我写的是下面的代码,它只读取一个 XML 文件并向我显示 RACE 元素及其属性。import osimport xml.etree.ElementTree as etbase_path = os.path.dirname(os.path.realpath(__file__))xml_file = os.path.join(base_path, "data\\c89b150a-7389-4f2f-a98b-9a241b12616c.xml")tree = et.parse(xml_file)root = tree.getroot()for child in root:    for element in child:        print(element.tag, ":", element.attrib)我现在想要做的是读取存储在同一路径中的多个 XML 文件,并找到那些带有meetingCode="349083" 的文件,以便它们将它们复制到不同的路径中,例如 C:\users\test。能否请你帮忙 ?之后,我的第二个需要是结合搜索,例如搜索并复制包含meetingCode="349083"和revision="1"的 xml 文件提前致谢 !
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

只需循环遍历文件夹中的所有 xml 文件,如下所示


import os

import xml.etree.ElementTree as ET


def process(data):

    xml_obj = ET.fromstring(data)

    for race in xml_obj:

        for k,v in race.items():

            if k == 'meetingCode' and v == '349083':

                return True

    return False


path = '<xml_dir>'

xml_files = os.listdir(path)

for xml_file in files:

    xml_file_path = os.path.join(path, xml_file)

    fp = open(xml_file_path)

    data = myfile.read()

    if process(data):

       #copy the file


查看完整回答
反对 回复 2021-12-17
  • 1 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信