У вас может быть второй скрипт, который импортирует / запускает ваш основной код. Этот скрипт перехватит все исключения и распечатает трассировку (затем дождитесь ввода пользователя перед завершением)
Предполагая, что ваш код структурирован с использованием 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() in Python 3)
Если у вас нет main() функцию, вы должны использовать оператор импорта в try: Блок:
try:
import myscriptname
except [...]
Лучшее решение, которое не требует дополнительных сценариев-оболочек, — запустить сценарий либо из IDLE, либо из командной строки.
В Windows перейдите в Пуск> Выполнить, введите cmd и войдите. Затем введите что-нибудь вроде ..
cd "PathTo Your Script"
Pythonbinpython.exe myscriptname.py
(Если вы установили Python в C:Python)
В Linux / Mac OS X это немного проще, вы просто запускаете cd /home/your/script/ становятся python myscriptname.py
Самый простой способ — использовать IDLE, запустить IDLE, открыть скрипт и нажать кнопку запуска (F5 or Ctrl+F5 Думаю). Когда скрипт завершает работу, окно не закрывается автоматически, поэтому вы можете видеть любые ошибки.
Также как Крис Торнхилл Предлагается, в Windows вы можете создать ярлык для своего скрипта, а в его свойствах префикс цели с помощью ..
C:WINDOWSsystem32cmd.exe /K [existing command]
от http://www.computerhope.com/cmd.htm:
/K command - Executes the specified command and continues running.
Уведомления
- Начало
- » Python для новичков
- » Python: консоль исчезает сразу после выполнения
#1 Ноя. 20, 2011 15:12:44
Python: консоль исчезает сразу после выполнения
Пишу небольшие консольные программы на Python’e. Но после вывода данных при помощи print консоль сразу закрывается, и я даже неуспеваю увидеть результат. Что дописать в скрипте чтоб консоль не закрывалась, или хотябы закрывалась через некоторое время?
Офлайн
- Пожаловаться
#2 Ноя. 20, 2011 15:22:38
Python: консоль исчезает сразу после выполнения
Офлайн
- Пожаловаться
#3 Ноя. 20, 2011 15:38:07
Python: консоль исчезает сразу после выполнения
Punk_Joker
Пишу небольшие консольные программы на Python’e. Но после вывода данных при помощи print консоль сразу закрывается, и я даже неуспеваю увидеть результат. Что дописать в скрипте чтоб консоль не закрывалась, или хотябы закрывалась через некоторое время?
Просто открой консоль (CMD в Windows или Terminal в UNIX) в той папке, где у тебя есть скрипт.
Напиши в консоли python <название скрипта>.py. И после выполения программы консоль никуда не пропадёт.
Офлайн
- Пожаловаться
#4 Ноя. 20, 2011 23:24:19
Python: консоль исчезает сразу после выполнения
Spectral
Просто открой консоль (CMD в Windows или Terminal в UNIX) в той папке, где у тебя есть скрипт.
Напиши в консоли python <название скрипта>.py. И после выполения программы консоль никуда не пропадёт.
можно создать ярлык для cmd.exe, удалив в его свойствах путь к system32
тогда он будет открывать в той папке, где находится
иногда удобнее raw_input()/input()
tags: cmd.exe
Отредактировано py.user.next (Сен. 8, 2022 01:16:02)
Онлайн
- Пожаловаться
#5 Дек. 2, 2011 20:57:31
Python: консоль исчезает сразу после выполнения
Punk_Joker
Пишу небольшие консольные программы на Python’e. Но после вывода данных при помощи print консоль сразу закрывается, и я даже неуспеваю увидеть результат. Что дописать в скрипте чтоб консоль не закрывалась, или хотябы закрывалась через некоторое время?
ну если приложение совсем уж простое то можно помимо raw_input() сделать например так:
cod@coder-desktop ~ $ nano ololo.py
cod@coder-desktop ~ $ python ololo.py > olololo
cod@coder-desktop ~ $ cat ololo
ololo
cod@coder-desktop ~ $
ну это как вариант конечно =) ну и в том случае если у тебя *nix
но raw_input() все= както прощще =)
Офлайн
- Пожаловаться
#6 Дек. 3, 2011 09:31:29
Python: консоль исчезает сразу после выполнения
ololo не поможет, вопрос касается уиндоус (когда щёлкаешь на скрипте, запуская его)
в лине то такой проблемы нет
Отредактировано (Дек. 3, 2011 09:32:56)
Онлайн
- Пожаловаться
#7 Июль 13, 2021 16:48:09
Python: консоль исчезает сразу после выполнения
Здравствуйте!
Начала изучать Питон. Сделала первую программку, файл.ру
Хочу открыть этот файл, но он моментально закрывается. Можно ли сделать, чтобы этот файл не закрывался?
Прикреплённый файлы:
Первая программа для Владика..py (411 байт)
Офлайн
- Пожаловаться
#8 Июль 19, 2021 21:17:19
Python: консоль исчезает сразу после выполнения
я решаю эту проблему как мне кажется колхозным но крайне действенным методом
если мне нужно чтоб консоль осталась открыта я в конце добавляю
и она не закроется пока ты что нибудь не введешь
Офлайн
- Пожаловаться
- Начало
- » Python для новичков
- » Python: консоль исчезает сразу после выполнения
|
101 / 53 / 21 Регистрация: 20.12.2009 Сообщений: 1,124 |
|
|
1 |
|
Как сделать, чтобы приложение не закрывалось при ошибке?01.09.2020, 13:49. Показов 1779. Ответов 7
консольное приложение собранное с помощью pyinstaller иногда крашится, ошибку не успеваю прочитать.
0 |
|
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
01.09.2020, 13:49 |
|
7 |
|
260 / 165 / 54 Регистрация: 03.05.2019 Сообщений: 339 |
|
|
01.09.2020, 14:06 |
2 |
|
Через IDE пробовали смотреть? Например, Visual Studio Code.
0 |
|
295 / 108 / 57 Регистрация: 07.12.2016 Сообщений: 209 |
|
|
01.09.2020, 14:21 |
3 |
|
Supersumestria, запускайте скрипт из консоли. В конце допишите pause при запуске. Тогда не будет консоль закрываться
0 |
|
Supersumestria 101 / 53 / 21 Регистрация: 20.12.2009 Сообщений: 1,124 |
||||
|
01.09.2020, 14:55 [ТС] |
4 |
|||
|
код при возможности скиньте. вот
0 |
|
4606 / 2027 / 359 Регистрация: 17.03.2012 Сообщений: 10,081 Записей в блоге: 6 |
|
|
01.09.2020, 15:45 |
5 |
|
Supersumestria, tryexcept?
0 |
|
5403 / 3827 / 1214 Регистрация: 28.10.2013 Сообщений: 9,554 Записей в блоге: 1 |
|
|
01.09.2020, 16:04 |
6 |
|
Supersumestria, И последнее: зачем все это ты решил засунуть в pyinstaller архив?
1 |
|
Модератор
2322 / 1388 / 473 Регистрация: 21.02.2017 Сообщений: 3,816 Записей в блоге: 1 |
|
|
01.09.2020, 16:20 |
7 |
|
Garry Galler, я предполагаю что скорее всего он пытается проверить кошельки и опустошить их.
0 |
|
Supersumestria 101 / 53 / 21 Регистрация: 20.12.2009 Сообщений: 1,124 |
||||||||
|
01.09.2020, 18:23 [ТС] |
8 |
|||||||
|
Немного переписал
запустил переписаный скрипт больше получаса, пока ошибки нет. возможно проверка
помогает, но я не уверен
0 |
|
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
01.09.2020, 18:23 |
|
Помогаю со студенческими работами здесь
Как сделать, чтобы диалоговое окно не закрывалось при нажатии клавиши ENTER? Как сделать, чтобы, при закрытии родительского, pop-up окно тоже закрывалось? Как сделать, чтобы при нажатии на кнопку открывалось новое QMainWindow и закрывалось текущее как сделать так, чтобы не просто выводилось сообщение об ошибке, а действие не проделывалось при при вводе значений ни о
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 8 |
в python при запуске скриптов есть ли способ остановить закрытие окна консоли после выплевывания обратной трассировки?
8 ответов
Если вы делаете это на ОС Windows, вы можете префикс целевой ярлык с:
C:WINDOWSsystem32cmd.exe /K <command>
это предотвратит закрытие окна при выходе команды.
16
автор: Chris Thornhill
try:
#do some stuff
1/0 #stuff that generated the exception
except Exception as ex:
print ex
raw_input()
вы можете зарегистрировать обработчик исключений верхнего уровня, который поддерживает приложение при возникновении необработанного исключения:
def show_exception_and_exit(exc_type, exc_value, tb):
import traceback
traceback.print_exception(exc_type, exc_value, tb)
raw_input("Press key to exit.")
sys.exit(-1)
import sys
sys.excepthook = show_exception_and_exit
это особенно полезно, если у вас есть исключения, возникающие внутри обработчиков событий, которые вызываются из кода C, которые часто не распространяют ошибки.
у вас может быть второй скрипт, который импортирует/запускает ваш основной код. Этот скрипт поймает все исключения и распечатает трассировку (затем дождитесь ввода пользователя перед завершением)
предполагая, что ваш код структурирован с помощью 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() функция, вы использовали бы положить оператор импорта в try: блок:
try:
import myscriptname
except [...]
лучшим решением, не требующим дополнительных сценариев-оболочек, является запуск скрипта либо из IDLE, либо из командной строки..
в Windows выберите Пуск > Выполнить, введите cmd и введите. Затем введите что-то вроде..
cd "PathTo Your Script"
Pythonbinpython.exe myscriptname.py
(если вы установили Python в C:Python)
на Linux / Mac OS X это немного проще, вы просто запустите cd /home/your/script/ затем python myscriptname.py
самый простой способ — использовать IDLE, запустить IDLE, открыть скрипт и нажать кнопку run (F5 или Ctrl+F5 я думаю). При выходе скрипта окно не закроется автоматически, поэтому вы можете увидеть любые ошибки
также, как Крис Торнхилл предложил, в Windows, вы можете создать ярлык для вашего скрипта, и в его свойствах префикс цели с..
C:WINDOWSsystem32cmd.exe /K [existing command]
от http://www.computerhope.com/cmd.htm:
/K command - Executes the specified command and continues running.
в системах UNIX (Windows уже была рассмотрена выше…) вы можете изменить аргумент интерпретатора, чтобы включить флаг-i:
#!/ usr / bin / python-i
из man-страницы:
-Я
когда скрипт передается в качестве первого аргумента или используется параметр-c, после выполнения скрипта или команды войдите в интерактивный режим. Он не читает файл $PYTHONSTARTUP. Это может быть полезно для проверки глобальных переменных или в стеке трассировка, когда сценарий вызывает исключение.
в windows вместо двойного щелчка по файлу py вы можете перетащить его в уже открытое окно CMD, а затем нажать enter. Он остается открытым после исключения.
Дэн
ваш вопрос не очень ясен, но я предполагаю, что интерпретатор python выходит (и, следовательно, окно вызывающей консоли закрывается), когда происходит исключение.
вам нужно изменить приложение python, чтобы поймать исключение и распечатать его, не выходя из интерпретатора. Один из способов сделать это-напечатать «нажмите ENTER для выхода», а затем прочитать некоторые входные данные из окна консоли, фактически ожидая, пока пользователь нажмет Enter.
Если вы используете Windows, вы можете сделать это
import os
#code here
os.system('pause')
Python: как предотвратить закрытие окна CMD
Я новичок в Python .. Я использовал код
x = input(' Hey what is your name ' ) print(' Hey, ' + x) input(' press close to exit ')
Потому что я искал эту проблему в Интернете и узнал, что вам нужно поставить какую-то фиктивную строку ввода в конце, чтобы не допустить закрытия командной строки, но я все еще сталкиваюсь с проблемой .. Пожалуйста, помогите
Я использую python 3.3
- вы можете либо запустить скрипт через платформу ожидания питонов, чтобы он не «закрылся», либо вы можете открыть командную строку (cmd), а затем запустить свой скрипт оттуда, он не будет «закрываться»
- Я не уверен, что вы ищете. делает
python -i script.pyделай что хочешь? Какая командная строка закрывается? Командная строка python или оболочка, через которую вы запускаете python? - гм, я думаю, что знаю проблему: вы даете ввод после второго оператора «input»? цель входной команды — зависнуть («оставаться там и не закрываться»), пока пользователь не нажмет клавишу. если вы дадите ввод, он закрывается.
- Нет, я даю первый ввод, а затем вторую строку, я прошу python напечатать его … затем я снова прошу python для ввода, чтобы он оставался там .. Он отлично работает в режиме ожидания, но не на cmd
В Windows закрывается консоль CMD, потому что процесс Python существует в конце.
Чтобы предотвратить это, сначала откройте консоль, а затем используйте командную строку для запуска вашего скрипта. Сделайте это, щелкнув правой кнопкой мыши папку, содержащую скрипт, выберите Open console here и набрав python scriptname.py в консоли.
Альтернативой, как вы выяснили, является откладывать сценарий заканчивается добавлением input() звоните в конце. Это позволяет пользователю сценария выбирать, когда сценарий завершится и консоль закроется.
- 4 Обратите внимание, что вам (по крайней мере, в Windows 7) нужно сдвигать + щелкать правой кнопкой мыши каталог, содержащий ваши исходные файлы, а не сам скрипт.
- 1 Я тоже пробовал это, но командная строка закрывалась мгновенно даже после добавления ввода
- @ user1946082: Похоже, вы вместо этого создали ошибку в своем скрипте. An
input()call сам по себе не просто завершает Python без ввода. - 1 Ну, в моей системе это тоже не дожидается, как и OP. Насколько я понимаю, здесь нет исключений.
- 1 @martineau: используйте python 3 вместо 2 или используйте
raw_input().
Это можно сделать с помощью модуля os. Ниже приведен простой код:
import os os.system('pause')
Это вызовет паузу и попросит пользователя нажать любую клавишу для продолжения.
[edit: Вышеупомянутый метод хорошо работает для ОС Windows. Кажется, проблема с Mac (как указано ihue в комментариях). Дело в том, что библиотека «os» зависит от операционной системы, и некоторые команды могут не работать в одной операционной системе, как они работают в другой].
- 1 библиотека «os» зависит от операционной системы. Я использую это с окнами, и он отлично работает, потому что на самом деле в cmd есть команда «пауза». Возможно, у Linux есть другой способ добиться этого.
- Хорошо, спасибо за разъяснения. Я проверю, как это сделать специально на Mac, но вы должны были упомянуть об этом в своем ответе.
- Правда ihue, я это добавил. Спасибо, что подняли этот вопрос. Пожалуйста, поделитесь своими выводами и для Mac.
Для сред Windows:
Если вы не хотите переходить в командную строку (или работать в среде, где командная строка ограничена), я думаю, что следующее решение — goo. Решение, которое я использую, — создать файл bat.
Используйте блокнот, чтобы создать текстовый файл. В файле содержимое будет выглядеть примерно так:
my_python_program.py pause
Затем сохраните файл как «my_python_program.bat» — НЕ ЗАБУДЬТЕ ВЫБРАТЬ «Все файлы!»
Когда вы запустите файл bat, он запустит программу python и остановится в конце, чтобы вы могли прочитать вывод. Затем, если вы нажмете любую клавишу, это закроет окно.
Tweet
Share
Link
Plus
Send
Send
Pin
Я очень плохо знаком с Python .. Я использовал код
x = input(" Hey what is your name " )
print(" Hey, " + x)
input(" press close to exit ")
Потому что я искал эту проблему в интернете и узнал, что в конце нужно поместить фиктивную строку ввода, чтобы не закрывать командную строку, но я все еще сталкиваюсь с проблемой.
Я использую python 3.3
3 ответа
Лучший ответ
В Windows это консоль CMD, которая закрывается, потому что процесс Python существует в конце.
Чтобы предотвратить это, сначала откройте консоль, а затем используйте командную строку для запуска сценария. Сделайте это, щелкнув правой кнопкой мыши папку, содержащую скрипт, выберите Open console here и введите python scriptname.py в консоли.
Как вы выяснили, альтернативой является отложить сценарий, заканчивающийся добавлением вызова input() в конце. Это позволяет пользователю сценария выбирать, когда сценарий заканчивается и консоль закрывается.
14
Martijn Pieters
3 Янв 2013 в 18:22
Для сред Windows:
Если вы не хотите переходить в командную строку (или работать в среде, где командная строка ограничена), я думаю, что следующее решение — goo. Я использую решение для создания файла bat.
Используйте блокнот для создания текстового файла. В файле содержимое будет выглядеть примерно так:
my_python_program.py
pause
Затем сохраните файл как «my_python_program.bat» — НЕ ЗАБУДЬТЕ ВЫБРАТЬ «Все файлы!
Когда вы запускаете файл bat, он запускает программу python и останавливается в конце, чтобы вы могли прочитать вывод. Затем, если вы нажмете любую клавишу, он закроет окно.
0
Inter Mob
13 Окт 2019 в 15:33
Это можно сделать с помощью модуля os. Ниже приведен простой код:
import os
os.system("pause")
Это создаст паузу и попросит пользователя нажать любую клавишу для продолжения.
[править: вышеуказанный метод хорошо работает для Windows OS. Это похоже на проблему с Mac (как указано в комментариях ihue). Дело в том, что библиотека «os» зависит от операционной системы, и некоторые команды могут не работать с одной операционной системой, как они работают в другой.]
8
Blaze
1 Ноя 2016 в 16:58

Как реализовать цикл, чтобы при появлении консоли программа приложение не закрывалось?