До этого я смог убить скрипт python, запущенный с execfile("somescript.py")
, в то время как в интерпретаторе нажав Ctrl + C
, не убивая интерпретатора. Это приведет к исключению KeyboardInterrupt
, которое остановит сценарий и позвольте мне снова использовать интерпретатор. Однако теперь (я подозреваю, что это связано с более новой версией python), когда я нажимаю Ctrl + C
при запуске скрипта, он иногда также убивает интерпретатор, бросая меня обратно в командную строку Linux. По какой-то причине это не происходит каждый раз, когда я убиваю скрипт с помощью Ctrl + C
.Остановить запуск сценария python без убийства интерпретатора
Это раздражает, потому что я часто использую интерпретатор python в интерактивном режиме, то есть я запускаю некоторый скрипт с execfile("somescript.py")
, играю с данными, которые он производит в интерпретаторе, и т. Д. До этого, если какой-то скрипт застрял, я смог его убить и не терять данные, которые он вычислил (или я сохранил в переменных), прежде чем застревать.
Так что мой вопрос: Как я могу убить скрипт python, запущенный с execfile()
в интерпретаторе, без убийства интерпретатора?
Почему бы не поймать исключение и 'break' независимо от цикла вы работаете? – jonrsharpe
Может случиться так, что скрипт случайно заканчивается как раз перед тем, как у него появится возможность справиться с прерыванием, и он оказывается пойманным интерпретатором. – BartoszKP
Я не думаю, что это так, потому что, если у меня ничего не работает в интерпретаторе, я могу нажать ctrl + C столько, сколько захочу, и интерпретатор не будет убит. Я думаю, что это поведение имеет какое-то отношение к тому факту, что я использую внешнюю (не-питон) библиотеку внутри моего скрипта, и если я убью скрипт, пока он что-то выполняет из этих библиотек, весь интерпретатор как-то умирает. – Echows