0
я итерация всего каталога с более чем 5k XML-файлов, и я хочу, чтобы имя файла, только если он содержит строку «стоп» под тегом <name>
, который сам является потомком тега <object>
:Почему я не могу получить имя файла в инструкции if?
import xml.etree.ElementTree as etree
import os
path = '/home/devf12/Documents'
listofnames = []
for filename in os.listdir(path):
if not filename.endswith('.xml'): continue
fullname = os.path.join(path, filename)
tree = etree.parse(fullname)
root = tree.getroot()
objects = [tag for tag in root.findall('object')]
for tag in objects:
objname = tag.findtext('name')
print filename # this is the last place that it will print the filename
if objname is 'stop': # but I need to narrow it down if it meets this condition
print filename # why wont it print here?
Кто-нибудь знает, почему мой текущий код не достигает этого и как это можно сделать?
Не используйте 'is' для сравнения строк. Он должен работать, если вы используете 'if objname == 'stop':'. –
черт возьми, я целеустремленно использовал, потому что == сообщал об ошибке по какой-то причине, когда я впервые ее попробовал. Но теперь это работает ... Спасибо! Если вы хотите, вы можете написать ответ @Rawing, чтобы я мог дать вам награду вам, как ответили. – Vrankela
вы можете напечатать objname и проверить, что он содержит, чтобы убедиться, что в какой-то момент у него есть. Если у вас есть пробел в имени объекта, вы можете попробовать, если «stop» в objename: –