Форум сайта python.su
0
есть конструкция try…except после except надо чтобы прога завершилась. как это сделать?
def f(val):
try:
a=input()
val+=int(a)
return val
except TypeError:
print('error')
#вот здесь хочу что бы прога завершилась
#код продолжается дальше
Офлайн
1
import sys
sys.exit()
Офлайн
253
логичнее raise - получите traceback с дополнительным пояснением причин падения
Офлайн
0
спасибо!
doza_and, raise не пойдет….
Офлайн
0
doza_andЯ бы так не делал - райс это падение, а не завершение.
логичнее raise - получите traceback с дополнительным пояснением причин падения
try:
...
except Ecxeption, e:
# logging e
sys.exit(1)
Отредактировано (Окт. 3, 2011 19:47:28)
Офлайн
5
можно ещё поюзать вот это http://docs.python.org/library/atexit.html
Офлайн
10
atexit - это не то. Он нужен для вызова cleanup функции уже после того, как программа завершилась.
Кстати, можно делать raise SystemExit (аналог sys.exit)
Офлайн
0
а что делать, если нужно выполнять и выполнять модуль, до тех пор пока юзер не наиграется и на вопрос “выйти?” не ответит “Да”?
Пыталась так (mymodule запускается из модуля startmodule.py)
while 1:
import mymodule
ans = input('выйти?')
if ans='yes':
break
Офлайн
253
import -> reload
Офлайн
857
Liut.py
а что делать, если нужно выполнять и выполнять модуль, до тех пор пока юзер не наиграется и на вопрос “выйти?” не ответит “Да”?
Пыталась так (mymodule запускается из модуля startmodule.py)
#!/usr/bin/env python3
import sys
ans = 'no'
while ans != 'yes':
try:
del sys.modules['mod']
except KeyError:
pass
import mod
ans = input('выйти? (yes/no) ')
print('Bye')
print('Hello')[guest@localhost tests]$ ./t.py
Hello
выйти? (yes/no) no
Hello
выйти? (yes/no) no
Hello
выйти? (yes/no) no
Hello
выйти? (yes/no) yes
Bye
[guest@localhost tests]$
Отредактировано (Окт. 5, 2011 03:04:45)
Офлайн