You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手求助:如何遍历多个XML文件(附单文件处理代码)

遍历多个XML文件的实现方案

你的核心问题是无法批量处理目录下的XML文件,之前尝试给ET.parse()传多个参数的方式是错误的(该方法仅接受单个文件路径)。下面是修改后的完整代码,实现批量遍历并处理所有XML文件:

关键思路

  • 用glob模块快速获取目录下所有XML文件路径
  • 将单个XML文件的处理逻辑封装成函数,便于重复调用
  • 遍历所有XML文件,逐个处理并收集结果

修改后的代码

import xml.etree.ElementTree as ET
import pandas as pd
import glob

def process_xml(file_path):
    # 处理单个XML文件的逻辑
    tree = ET.parse(file_path)
    root = tree.getroot()

    qty = root.iterfind(".//Qty")
    pri = root.iterfind(".//PriceAmount")
    cor = root.iterfind(".//AuctionIdentification")

    data = []
    for x, y, z in zip(qty, pri, cor):
        a = x.get("v"), y.get("v"), z.get("v")
        data.append(a)
    
    df = pd.DataFrame(data, columns=["Qty", "Price" , "Border"])
    df['Qty'] = df['Qty'].astype(float)
    df['Price'] = df['Price'].astype(float)

    total = df['Qty'].sum()
    price = df['Price'].mean()
    border = df.loc[0,'Border']

    # 返回当前文件的统计结果
    return pd.DataFrame({
        "Qty": [total],
        "Price": [price],
        "Border": [str(border)[0:12]]
    })

# 获取当前目录下所有XML文件
xml_files = glob.glob("*.xml")

# 收集所有文件的处理结果
all_results = []
for file in xml_files:
    print(f"正在处理文件: {file}")
    result_df = process_xml(file)
    all_results.append(result_df)

# 合并所有结果到一个DataFrame
final_df = pd.concat(all_results, ignore_index=True)

# 可以打印或保存最终结果
print(final_df)
# final_df.to_csv("xml_summary.csv", index=False)

代码说明

  1. process_xml函数:把你原来处理单个XML的逻辑全部封装进去,输入文件路径,输出该文件的统计结果DataFrame
  2. glob.glob("*.xml"):获取当前工作目录下所有后缀为.xml的文件,如果你需要指定其他目录,改成glob.glob("/path/to/your/xmls/*.xml")即可
  3. 循环遍历处理:逐个读取XML文件,调用处理函数,把每个文件的结果存入列表,最后用pd.concat合并成一个总的结果表

内容的提问来源于stack exchange,提问作者AuctionKing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 05:10:23