Как открыть окно вывода Python script?

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

Ответ 1

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

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

    python myscript.py
    

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

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

  • Добавьте код, чтобы подождать в конце вашего script. Для Python2 добавление...

    raw_input()
    

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

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

Ответ 2

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

Ответ 3

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

 raw_input("Press enter to exit ;)")

Или, в Python 3:

input("Press enter to exit ;)")

Ответ 4

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

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

Ответ 5

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

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

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

таким образом вы остаетесь в интерактивном режиме после выполнения вашего Notepad ++ python script, и вы сможете играть со своими переменными и так далее:)

Ответ 6

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

python your-program.py

pause

Ответ 7

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

Ответ 8

Используя 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.

Ответ 9

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

Ответ 10

На питоне 3

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

Сделаем трюк.

Ответ 11

Чтобы просто оставить окно открытым, я согласен с Anurag, и это то, что я сделал, чтобы мои окна открывались для коротких небольших программ типа расчета.

Это просто покажет курсор без текста:

raw_input() 

В следующем примере вы получите четкое сообщение о том, что программа выполнена и не ждет другого приглашения ввода внутри программы:

print('You have reached the end and the "raw_input()" function is keeping the window open') 
raw_input()

Внимание!
(1) В python 3 нет raw_input(), просто вход().
(2) Используйте одинарные кавычки, чтобы указать строку; в противном случае, если вы набираете дубликаты вокруг чего-либо, например "raw_input()", он будет считать, что это функция, переменная и т.д., а не текст.

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

print("You have reached the end and the "input()" function is keeping the window open")
input()

Надеюсь, это поможет другим, кто может начать, и до сих пор не понял, как компьютер еще думает. Это может занять некоторое время.: О)

Ответ 12

Если вы хотите запустить script с ярлыка на рабочем столе, щелкните правой кнопкой мыши файл python и выберите Send to|Desktop (create shortcut). Затем щелкните правой кнопкой мыши ярлык и выберите "Свойства". На вкладке "Ярлык" выберите текстовое поле "Цель:" и добавьте cmd /k перед дорожкой и нажмите "ОК". Ярлык должен теперь запускать ваш script без закрытия, и вам не нужен input('Hit enter to close')

Примечание. Если на вашем компьютере имеется более одной версии python, добавьте имя требуемого исполняемого файла python между cmd/k и следующим способом:

cmd /k python3 "C:\Users\<yourname>\Documents\your_scipt.py"

Ответ 13

Помимо input и raw_input, вы также можете использовать бесконечный цикл while, например: while True: pass (Python 2.5 +/3) или while 1: pass (все версии Python 2/3). Это может использовать вычислительную мощность.

Вы также можете запустить программу из командной строки. Введите python в командной строке (терминал Mac OS X), и он должен сказать Python 3.?.? (ваша версия Python). Он не показывает вашу версию Python или говорит python: command not found, изучает изменения значений PATH (значения enviromentl, перечисленные выше)/тип C:\(Python folder\python.exe. Если это успешно, введите python или C:\(Python installation)\python.exe и полный каталог вашей программы.

Ответ 14

Очень запоздалый ответ, но я создал пакетный файл Windows с именем pythonbat.bat содержащий следующее:

python.exe %1
@echo off
echo.
pause

и затем указал pythonbat.bat в качестве обработчика по умолчанию для файлов .py.

Теперь, когда я дважды .py файлу .py в проводнике, он открывает новое окно консоли, запускает скрипт Python и затем приостанавливает (остается открытым), пока я не нажму любую клавишу...

Никаких изменений не требуется для любых скриптов Python.

Я все еще могу открыть консольное окно и указать python myscript.py если я хочу...

(Я только заметил, что @maurizio уже опубликовал этот точный ответ)

Ответ 15

Лучший способ запустить python без закрытия окна без прохождения cmd.exe (например, если вам, как и мне, вам нужно отладить некоторый нативный код, запущенный python.exe), это добавить аргумент -i

python.exe -i my_script.py

И, наконец, интерактивный режим будет активен после запуска скрипта (даже если ваш код неверен, вы увидите исключение).

Ответ 16

Вы можете открыть PowerShell и набрать "python". После импорта Python вы можете скопировать и вставить исходный код из вашего любимого текстового редактора, чтобы запустить код.

Окно не закроется.

Ответ 17

Если вы хотите оставить окно cmd-окна открытым и находиться в каталоге с запущенными файлами, это работает в Windows 10:

cmd /k cd /d $(CURRENT_DIRECTORY) && python $(FULL_CURRENT_PATH)

Ответ 18

  • Go здесь и загрузите и установите Notepad ++
  • Go здесь и загрузите и установите Python 2.7, а не 3.
  • Запустите, запустите Powershell. Введите следующее. [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
  • Закройте панель Powershell и откройте ее.
  • Создайте каталог для своих программ. Скрипты mkdir
  • Открыть сценарии cd c каталога
  • В Notepad ++ в новом типе файла: print "hello world"
  • Сохраните файл как hello.py
  • Вернитесь в PowerShell и убедитесь, что вы находитесь в правильном каталоге, набрав dir. Вы должны увидеть свой файл hello.py там.
  • В командной строке Powershell: python hello.py

Ответ 19

Простой взлом, чтобы держать окно открытым:

counter = 0

While (True):

    If (counter == 0):

        # Code goes here

    counter += 1

Счетчик таков, что код не повторяется.

Ответ 20

В окне Windows 10 вставьте это:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

Странно, но он работает для меня! (Вместе с input() в конце, конечно)