xml.etree.ElementTree: OSError: [Errno 22] when parsing multiple files

xml.etree.ElementTree: OSError: [Errno 22] when parsing multiple files

我正在尝试使用 ElementTree.parse 解析多个文件(文件中列出的路径,每行一个),如下所示:

import xml.etree.ElementTree as ET
...
file_list = open('datasets\files.txt','r')
for filename in file_list:
    tree = ET.parse(filename)

如果我的files.txt只有一行,程序运行并解析数据。如果我有不止一行,我会得到错误:

OSError: [Errno 22] Invalid argument: 'datasets/data1.xml'

files.txt 的示例内容是:

datasets/data1.xml
datasets/data2.xml

删除任何一行将使程序正常工作。但是当我同时拥有两者时,我得到了错误。 我的想法是,也许我必须设置 tree = None 来修复它,但事实并非如此。

导致问题的是 \n 换行符。只好strip() filename.

希望这会解决

import io
import xml.etree.ElementTree as ET
...
file_list = open('datasets\files.txt','r')
for filename in file_list:
    tree = ET.parse(io.StringIO(filename.text))