У вас может быть второй скрипт, который импортирует / запускает ваш основной код. Этот сценарий будет перехватывать все исключения и выводить обратную трассировку (затем дождаться пользовательского ввода перед завершением)
Предполагается, что ваш код структурирован с использованием идиомы if __name__ == "__main__": main()
.
def myfunction():
pass
class Myclass():
pass
def main():
c = Myclass()
myfunction(c)
if __name__ == "__main__":
main()
.. и файл называется «myscriptname.py» (очевидно, что его можно изменить), будет работать следующее
from myscriptname import main as myscript_main
try:
myscript_main()
except Exception, errormsg:
print "Script errored!"
print "Error message: %s" % errormsg
print "Traceback:"
import traceback
traceback.print_exc()
print "Press return to exit.."
raw_input()
(Обратите внимание, что raw_input()
был заменен на input()
в Python 3 )
Если у вас нет функции main()
, вы должны использовать оператор import в блоке try:
:
try:
import myscriptname
except [...]
Лучшее решение, которое не требует дополнительных скриптов-оберток, - это запуск скрипта либо из IDLE, либо из командной строки.
В Windows перейдите в Пуск> Выполнить, введите cmd
и введите. Затем введите что-то вроде ..
cd "\Path\To Your\ Script\"
\Python\bin\python.exe myscriptname.py
(Если вы установили Python в C:\Python\
)
В Linux / Mac OS X это немного проще, вы просто запускаете cd /home/your/script/
, а затем python myscriptname.py
Самый простой способ - использовать IDLE, запустить IDLE, открыть скрипт и нажать кнопку запуска (думаю, F5
или Ctrl+F5
). Когда скрипт завершается, окно не закрывается автоматически, поэтому вы можете увидеть любые ошибки
Кроме того, как подсказал Крис Торнхилл , в Windows вы можете создать ярлык для своего скрипта, а в его свойствах префикс цели с ...
C:\WINDOWS\system32\cmd.exe /K [existing command]
С http://www.computerhope.com/cmd.htm:
/K command - Executes the specified command and continues running.