如何强制ElementTree在指定目录查找XML文件?问题分析与解决
问题原因
- 你写的
check_xml(x)函数虽然接收了目录参数x,但函数内部完全没用到这个参数!直接硬编码了ET.parse('sample.xml'),所以ElementTree只会在当前程序运行的工作目录里查找文件,自然就忽略了你传入的指定目录。 - 补充说明:相对路径的查找基准是程序的当前工作目录,不一定是脚本文件所在的目录,这也是你误以为ET只搜索脚本自身目录的原因。
修复方法
修改classes.py中的check_xml函数,把传入的目录和文件名拼接成完整路径,推荐用os.path.join处理跨平台的路径分隔符问题:
import os import xml.etree.ElementTree as ET def check_xml(x): # 拼接指定目录与文件名,生成完整路径 xml_full_path = os.path.join(x, 'sample.xml') tree = ET.parse(xml_full_path) root = tree.getroot() print(tree)
如果后续要处理目录下所有XML文件,可以结合glob模块实现批量处理:
import os import glob import xml.etree.ElementTree as ET def check_xml(x): # 获取指定目录下所有XML文件的完整路径 all_xml_files = glob.glob(os.path.join(x, '*.xml')) for file_path in all_xml_files: tree = ET.parse(file_path) root = tree.getroot() print(f"正在处理文件:{file_path}") # 在这里添加你的XML处理逻辑
内容的提问来源于stack exchange,提问作者Avila
相关产品推荐
相关产品推荐

