Python закрывается консоль после ошибки

You could have a second script, which imports/runs your main code. This script would catch all exceptions, and print a traceback (then wait for user input before ending)

Assuming your code is structured using the if __name__ == "__main__": main() idiom..

def myfunction():
    pass

class Myclass():
    pass

def main():
    c = Myclass()
    myfunction(c)

if __name__ == "__main__":
    main()

..and the file is named «myscriptname.py» (obviously that can be changed), the following will work

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()

(Note that raw_input() has been replaced by input() in Python 3)

If you don’t have a main() function, you would use put the import statement in the try: block:

try:
    import myscriptname
except [...]

A better solution, one that requires no extra wrapper-scripts, is to run the script either from IDLE, or the command line..

On Windows, go to Start > Run, enter cmd and enter. Then enter something like..

cd "PathTo Your Script"
Pythonbinpython.exe myscriptname.py

(If you installed Python into C:Python)

On Linux/Mac OS X it’s a bit easier, you just run cd /home/your/script/ then python myscriptname.py

The easiest way would be to use IDLE, launch IDLE, open the script and click the run button (F5 or Ctrl+F5 I think). When the script exits, the window will not close automatically, so you can see any errors

Also, as Chris Thornhill suggested, on Windows, you can create a shortcut to your script, and in it’s Properties prefix the target with..

C:WINDOWSsystem32cmd.exe /K [existing command]

From http://www.computerhope.com/cmd.htm:

/K command - Executes the specified command and continues running.

In Windows, when a Python script exits, the Command Prompt window closes. If it exited from an error, it closes before you can read anything. I’ve been using this to hold the window open even on errors:

if __name__ == '__main__':
    try:
        main()
    except BaseException as e:
        print('Error:')
        print(e)
        raise
    finally:
        raw_input('(Press <Enter> to close)')

It works if main() calls sys.exit(), but doesn’t work for things like syntax errors. Is there a better way?

asked Apr 11, 2012 at 19:26

endolith's user avatar

What you have will work in most scenarios (a thread calling os._exit() is one notable exception).

An alternative is to wrap the Python script in a batch file, and use the pause command after invoking the Python interpreter.

answered Apr 11, 2012 at 19:29

NPE's user avatar

NPENPE

484k108 gold badges944 silver badges1009 bronze badges

I’m using a batch file with this code right now

@echo off
envproject_envScriptspython.exe -mpdb test.py
pause

envproject_env is a virtualenv directory with the libraries used by test.py

envproject_envScriptspython.exe is a python interpreter that makes the virtualenv magic to use the libraries installed in it.

-mpdb will open a debugger if the program terminates with an uncatched exception.

answered Apr 11, 2012 at 19:30

KurzedMetal's user avatar

KurzedMetalKurzedMetal

12.5k5 gold badges39 silver badges65 bronze badges

Здравствуйте, пишу проект по информатике для своего учителя (10 класс)

Я совсем недавно начал изучать python и по всей видимости есть ошибки, раз прога не хочет работать.
Исходный код:

from translate import Translator
choice = None
while choice != 0:
    print("Здравствуйте, эта программа поможет вам упростить работу с текстом")
    print("Выберите, что вы хотите сделать")
    print("1.Я случайно переключил расскладку и мой текст пошел в мусорку (мы исправим ваши английские символы на русские)")
    print("2.Переведи мне слово с русского на английский")
    choice = input()
    if choice == '1':
        #ПОМЕНЯЮ ВАШУ АНГЛИЙСКУЮ РАССКЛАДКУ НА РУССКУЮ
        print("Введите ваш текст")
        vvod = input()
        raskladka = dict(zip(map(ord, "qwertyuiop[]asdfghjkl;'zxcvbnm,./`"
                           'QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>?~'),
                           "йцукенгшщзхъфывапролджэячсмитьбю.ё"
                           'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,Ё'))
        while vvod !=0:
            print(vvod.translate(raskladka))
            vvod = input()
    elif choice == "2":
        #ПЕРЕВОДЧИК С АНГЛИЙСКОГО НА РУССКИЙ
        print("Введите ваше слово")
        text = input()
        while text != 0:
            translator = Translator(from_lang='ru', to_lang="en")
            end_text = translator.translate(text)
            print(end_text)
            text = input()

У вас может быть второй script, который импортирует/запускает ваш основной код. Этот script будет использовать все исключения и распечатать трассировку (затем дождаться ввода пользователя до окончания)

Предполагая, что ваш код структурирован с помощью if __name__ == "__main__": main() idiom..

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 [...]

Лучшее решение, которое не требует дополнительных сценариев-оболочек, заключается в том, чтобы запустить script либо из 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, открыть script и нажать кнопку запуска (F5 или Ctrl+F5, я думаю). Когда script завершается, окно не будет закрываться автоматически, поэтому вы можете увидеть любые ошибки

Кроме того, как предложил Крис Торнхилл, в Windows вы можете создать ярлык для своего script, а в нем Properties префикс цели с помощью

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: консоль исчезает сразу после выполнения

Здравствуйте!
Начала изучать Питон. Сделала первую программку, файл.ру
Хочу открыть этот файл, но он моментально закрывается. Можно ли сделать, чтобы этот файл не закрывался?

Прикреплённый файлы:
attachment Первая программа для Владика..py (411 байт)

Офлайн

  • Пожаловаться

#8 Июль 19, 2021 21:17:19

Python: консоль исчезает сразу после выполнения

я решаю эту проблему как мне кажется колхозным но крайне действенным методом
если мне нужно чтоб консоль осталась открыта я в конце добавляю

и она не закроется пока ты что нибудь не введешь

kay=1111, хуй пизда алибаба

Офлайн

  • Пожаловаться

  • Начало
  • » Python для новичков
  • » Python: консоль исчезает сразу после выполнения

Понравилась статья? Поделить с друзьями:
  • Python если ошибка то действие
  • Python вывод текста ошибки
  • Python вывод кода ошибки
  • Python вывести матрицу ошибок
  • Python вектор ошибок