import urllib2
import webbrowser
import time
import sys
URL = "http://nonexisting"
while True:
try:
website = urllib2.urlopen(URL, timeout=1)
if website:
webbrowser.open_new(URL)
break
except KeyboardInterrupt:
break
except:
sys.stdout.write('.')
time.sleep(1)
Я ожидаю, что этот код, чтобы написать точку каждый второй, но вместо того, чтобы ничего не происходит, и когда я нажимаю CTRL- C я получаю этот выход:Output не отображается на стандартный вывод в Python при написании в попробовать ... кроме того: блок
^C..........Traceback (most recent call last):
File "stackoverflow_question.py", line 21, in <module>
time.sleep(1)
KeyboardInterrupt
Таким образом, каждую точку появляется после прерывания. Почему это ? Как я могу достичь ожидаемого результата? Я пробовал с заявлением print
либо с тем же результатом. В OS X и Linux тоже.
Кроме того, этот код будет тратить большую часть времени на 'time.sleep'. В течение этого интервала 'KeyboardInterrupt' не будет пойман. – mgilson
действительно! Но программа все равно прерывается: D Итак, как я могу ее поймать и правильно обработать? – kissgyorgy
@Walkman: переместите время в попытке. Для более полного ответа задайте новый вопрос. – SingleNegationElimination