Как сохранить окно вывода скрипта Python открытым? - PullRequest
167 голосов
/ 16 июня 2009

Я только начал с Python. Когда я выполняю файл сценария python в Windows, окно вывода появляется, но мгновенно исчезает. Мне нужно, чтобы остаться там, чтобы я мог проанализировать свои результаты Как я могу держать его открытым?

Ответы [ 17 ]

140 голосов
/ 16 июня 2009

У вас есть несколько вариантов:

  1. Запустите программу с уже открытого терминала. Откройте командную строку и введите:

    python myscript.py
    

    Чтобы это работало, вам нужен исполняемый файл python на вашем пути. Просто проверьте , как редактировать переменные окружения в Windows, и добавьте C:\PYTHON26 (или любой каталог, в который вы установили python).

    Когда программа завершится, вместо закрытия окна вы вернетесь к приглашению cmd .

  2. Добавьте код для ожидания в конце вашего скрипта. Для Python2 добавим ...

    raw_input()
    

    ... в конце скрипта заставляет его ждать клавишу Enter . Этот метод раздражает, потому что вы должны изменить скрипт и не забыть удалить его, когда закончите. Особенно раздражает при тестировании чужих скриптов. Для Python3 используйте input().

  3. Используйте редактор, который делает паузу для вас. Некоторые редакторы, подготовленные для Python, автоматически запустят вас после выполнения. Другие редакторы позволяют вам настроить командную строку, которую он использует для запуска вашей программы. Я считаю особенно полезным настроить его как "python -i myscript.py" во время работы. Это приводит к тому, что после завершения программы вы попадаете в оболочку Python с загруженной программной средой, так что вы можете в дальнейшем играть с переменными и вызывать функции и методы.

45 голосов
/ 23 июня 2009

cmd /k - это типичный способ открыть любое консольное приложение (не только Python) с консольным окном, которое останется после закрытия приложения. Самый простой способ сделать это - нажать Win + R, набрать cmd /k, а затем перетащить нужный скрипт в диалоговое окно «Выполнить».

35 голосов
/ 16 июня 2009

Запустить скрипт из уже открытого окна cmd или в конце скрипта добавьте что-то вроде этого в Python 2:

 raw_input("Press enter to exit ;)")

Или в Python 3:

input("Press enter to exit ;)")
18 голосов
/ 12 марта 2014

Чтобы сохранить ваше окно открытым в случае исключения (пока при печати исключения)

Python 2

if __name__ == '__main__':
    try:
        ## your code, typically one function call
    except Exception:
        import sys
        print sys.exc_info()[0]
        import traceback
        print traceback.format_exc()
        print "Press Enter to continue ..." 
        raw_input() 

Чтобы окно оставалось открытым в любом случае:

if __name__ == '__main__':
    try:
        ## your code, typically one function call
    except Exception:
        import sys
        print sys.exc_info()[0]
        import traceback
        print traceback.format_exc()
    finally:
        print "Press Enter to continue ..." 
        raw_input()

Python 3

Для Python3 вам придется использовать input() вместо raw_input() и, конечно, адаптировать операторы print.

if __name__ == '__main__':
    try:
        ## your code, typically one function call
    except BaseException:
        import sys
        print(sys.exc_info()[0])
        import traceback
        print(traceback.format_exc())
        print("Press Enter to continue ...")
        input() 

Чтобы окно оставалось открытым в любом случае:

if __name__ == '__main__':
    try:
        ## your code, typically one function call
except BaseException:
    import sys
    print(sys.exc_info()[0])
    import traceback
    print(traceback.format_exc())
finally:
    print("Press Enter to continue ...")
    input()
13 голосов
/ 10 февраля 2012

вы можете объединить ответы раньше: (для пользователя Notepad ++)

нажмите F5 для запуска текущего скрипта и введите команду:

cmd /k python -i "$(FULL_CURRENT_PATH)"

таким образом вы остаетесь в интерактивном режиме после выполнения скрипта Python для Notepad ++ и можете поиграться с переменными и т. Д.)

9 голосов
/ 16 мая 2015

Создайте командный файл Windows с этими 2 строками:

python your-program.py

pause
6 голосов
/ 03 декабря 2015

Используя atexit, вы можете приостановить программу сразу после ее выхода. Если причиной выхода является ошибка / исключение, оно будет приостановлено после печати трассировки стека.

import atexit

# Python 2 should use `raw_input` instead of `input`
atexit.register(input, 'Press Enter to continue...')

В моей программе я поставил вызов atexit.register в предложении except, чтобы он приостанавливался только если что-то пошло не так.

if __name__ == "__main__":
    try:
        something_that_may_fail()

    except:
        # Register the pause.
        import atexit
        atexit.register(input, 'Press Enter to continue...')

        raise # Reraise the exception.
6 голосов
/ 19 августа 2015

В Python 2 вы можете сделать это с помощью: raw_input ()

>>print("Hello World!")    
>>raw_input('Waiting a key...')

В Python 3 вы можете сделать это с помощью: input ()

>>print("Hello world!")    
>>input('Waiting a key...')

Также вы можете сделать это с помощью time.sleep (time)

>>import time
>>print("The program will close in 5 seconds")
>>time.sleep(5)
5 голосов
/ 18 декабря 2010

У меня была похожая проблема. В Notepad ++ я использовал команду: C:\Python27\python.exe "$(FULL_CURRENT_PATH)", которая закрывала окно cmd сразу после завершения кода.
Теперь я использую cmd /k c:\Python27\python.exe "$(FULL_CURRENT_PATH)", который держит окно cmd открытым.

4 голосов
/ 27 мая 2018

На Python 3

input('Press Enter to Exit...')

сделает свое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...