У меня есть скрипт python, который будет анализировать xml-файл для серийных номеров и будет записывать их в текстовый файл. Проблема с приведенным ниже кодом заключается в том, что он идет бесконечным циклом. Если я добавляю оператор break, где после входа в файл он записывает только один серийный номер. Как увеличить счетчик, чтобы программа выходила после записи всех серийных номеров.Извлечение из while True loop
try:
while True:
data, addr = s.recvfrom(65507)
mylist=data.split('\r')
url = re.findall('http?://(?:[a-zA-Z]|[0-9]|[[email protected]&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', data)
print url[0]
response = urllib2.urlopen(url[0])
the_page = response.read()
tree = ET.XML(the_page)
with open("temp.xml", "w") as f:
f.write(ET.tostring(tree))
document = parse('temp.xml')
actors = document.getElementsByTagName("ns0:serialNumber")
for act in actors:
for node in act.childNodes:
if node.nodeType == node.TEXT_NODE:
r = "{}".format(node.data)
print r
logToFile(str(r))
time.sleep(10)
s.sendto(msg, ('239.255.255.250', 1900))
except socket.timeout:
pass
Какое условие для завершения цикла - вам нужно какое-то условие. – AChampion
Спасибо @ AChanpion - как только все номера серий записываются в файл. Он должен выйти –
Например, вы не можете выйти из 'if len (data) == 0'? –