有问题的文件名返回为“.xml”但不存在

Problematic filename returned as '.xml' but does not exist

import lxml.etree as ET
import os

# Select path of Annotations 
path = "/home/student/Documents/Dataset/Train/Annotation/"

# Search for each file under the path
for files in os.listdir(path):
    # open the files by appending the path with file name. Parse it and find root
    with open(path + files) as f:
        tree = ET.parse(f)
        root = tree.getroot()
        
        # Loop through the elements 
        for elem in root.getiterator():
            try:
                if elem.tag == 'name':
                    if elem.text == 'person':
                        print(files)
         
            except AttributeError:
                pass
   

结果:

.xml
.xml
.xml

您好,我正在编写一个脚本,将 .xml 文件夹中的某个 class 的标签名称从 'person' 更改为 'head'。我做了一个简单的计数器来计算标签总数,发现有 3 个标签没有转换。

更改标签名称代码:

        # Replace labels
        if elem.tag == 'name':
            elem.text = elem.text.replace('person', 'head')

在进行故障排除时,我尝试打印文件名,但它返回了 3 个名为“.xml”的文件。在 运行 一些测试之后,我发现所有 3 个实例都指向同一个文件。但是,我无法在文件夹中的任何位置找到该文件。知道为什么文件名仅作为扩展名读取吗?谢谢!

文件命名约定为:

XXXX.xml
PartA_XXXXX.xml
PartB_XXXXX.xml

此文件夹中可能有一个名为 .xml 的文件,但默认情况下,以 . 开头的文件隐藏在 linux。

如果您 运行 ls -la 文件夹,您可能会看到这些文件。

关于它打印.xml 3 次的事实,可能是因为此文件将标签name 设置为person 三次,因为您没有break 从找到第一个匹配项后的迭代开始。