有问题的文件名返回为“.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
从找到第一个匹配项后的迭代开始。
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
从找到第一个匹配项后的迭代开始。