Вопрос по python, windows – Как сохранить окно вывода скрипта Python открытым?

158

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

просто перетащите ваш скрипт в окно cmd JinSnow
Посмотрите ответ, который @maurizio опубликовал ниже - он единственный, который не требует, чтобы вы меняли свои скрипты на python. roryhewitt
Запоздалый +1000. Я использую python в качестве обучающего языка для друга, который использует Windows, и я не мог поверить, насколько трудно (по крайней мере, на основе существующей документации) добраться до того места, где мы могли бы запустить скрипт и посмотреть результат. Cascabel
Вы могли бы подумать, что окно вывода должно оставаться открытым по умолчанию. Это происходит при запуске Python в Mac OS. Очень расстраивает Fandango68
Я собираюсь связать другой вопросKeep Windows Console open after a Python Error на этот (который я опубликовал ответ для отладки с помощью сценариев перетаскивания и удаления). akinuri

Ваш Ответ

17   ответов
9

python your-program.py

pause
даже лучше, используйтеpython %* и установите его как один из «открыть с помощью» программы, так что вы можете либо щелкнуть правой кнопкой мыши по файлу .py, чтобы открыть окно паузы, либо я также поместил его в папку Anaconda3 (в PATH) как py_pause.bat, так что теперь я могу запуститьpy_pause my-prog.py all my args из строки cmd
Это единственный ответ, который даже отдаленно правильный. Ответы, требующие искаженияevery single Python script you will ever run сraw_input или другой мусор просто не прав. Либо введите вашу команду в командной строке так, как ожидает вас Python, либо используйтеbatch language который был предоставлен с MS-DOS дляexactly this purpose посколькуAugust 1981.
Или жеimport os os.system("pause") в конце.py файл
Это буквально ЕДИНСТВЕННЫЙ правильный ответ.
42

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

Нужно ли перетаскивать скрипт, включая саму команду Python? Извините, можно привести пример? Я новичок, очень плохо знаком с Python под Windows.
да это тоже работает rohitmishra
Фантастический ответ. Ты должен был это получить.
cmd /k только для Windows. Я не могу помочь с альтернативой Mac, извините.
Просто для команды python os.system вы должны выполнить команду os.system ("cmd / k" + myAppPath + "& quot; + myFlagsString)
-1

counter = 0

While (True):

    If (counter == 0):

        # Code goes here

    counter += 1

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

31

в конце скрипта добавьте что-то вроде этого в Python 2:

 raw_input("Press enter to exit ;)")

Или в Python 3:

input("Press enter to exit ;)")
& quot; Любой ключ & quot; не сработает, будет работать только Enter (или Ctrl + D, в зависимости от того, где мы находимся).
@DanielAndersson ага, изменил текст
0

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

python.exe %1
@echo off
echo.
pause

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

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

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

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

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

132

Run the program from an already-open terminal. Open a command prompt and type:

python myscript.py

For that to work you need the python executable in your path. Just check on how to edit environment variables on Windows, and add C:\PYTHON26 (or whatever directory you installed python to).

When the program ends, it'll drop you back to the cmd prompt instead of closing the window.

Add code to wait at the end of your script. For Python2, adding ...

raw_input()

... at the end of the script makes it wait for the Enter key. That method is annoying because you have to modify the script, and have to remember removing it when you're done. Specially annoying when testing other people's scripts. For Python3, use input().

Use an editor that pauses for you. Some editors prepared for python will automatically pause for you after execution. Other editors allow you to configure the command line it uses to run your program. I find it particularly useful to configure it as "python -i myscript.py" when running. That drops you to a python shell after the end of the program, with the program environment loaded, so you may further play with the variables and call functions and methods.

Я могу увидеть вывод, запустив его с уже открытого терминала. Но мне нужно дать полный адрес скрипта в команде python? Можно ли этого избежать? Когда я использую метод raw_input (), он выдает мне NameError: имя «raw_input» не определено. Можете ли вы предложить редактор, который автоматически останавливается после выполнения? rohitmishra
@movingahead: может быть, вы используете Python 3? в питоне 3 он был переименован в input (). Но я бы сейчас использовал python 2.6, поскольку в python 3 отсутствуют важные сторонние библиотеки, которые еще не были портированы. (см. другие вопросы по Python 2vs3). Что касается редактора, я не использую windows, notepad ++ позволяет настроить команду. Я использую Emacs, который имеет версию для Windows, но я никогда не использовал его.
@movingahead Я использую Aptana studio. (Пыдев предварительно упакован). это действительно хорошо. нечего сказать.
@nosklo спасибо !! Да, я использую Python 3. Делать базовые вещи сейчас, поэтому не должно быть большой проблемой. Я попробую блокнот ++. В настоящее время пробую Pydev для Eclipse rohitmishra
+1 к пункту 3. Я использую Scite в качестве редактора Python, и он просто сохраняет вывод в собственном окне вывода. Это действительно полезно, потому что вы можете увидеть результаты более чем одного запуска в одном окне.
6

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.
-3

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

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

Почему это было отвергнуто? Это на самом деле работает!
-1
Go here and download and install Notepad++ Go here and download and install Python 2.7 not 3. Start, Run Powershell. Enter the following. [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User") Close Powershell and reopen it. Make a directory for your programs. mkdir scripts Open that directory cd scripts In Notepad++, in a new file type: print "hello world" Save the file as hello.py Go back to powershell and make sure you are in the right directory by typing dir. You should see your file hello.py there. At the Powershell prompt type: python hello.py
2

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

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

cmd /k python3 "C:\Users\<yourname>\Documents\your_scipt.py"
Спасибо! Это на самом деле мне очень помогло. Я пользователь Linux и не мог понять это.
13

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

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

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

спасибо, отлично работает
Это отличный пакетный файл Windows, если вы измените $ (FULL_CURRENT_PATH) на имя пути Windows.
Я обнаружил, что намного проще получить плагин PyNPP и назначить ярлык для его запуска (не забудьте отключить предыдущий ярлык F5)
17

ючения)

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() in place of 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()
спасибо Антонио!
2

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

This would just show a cursor with no text:

raw_input() 

This next example would give you a clear message that the program is done and not waiting on another input prompt within the program:

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

Note!
(1) In python 3, there is no raw_input(), just input().
(2) Use single quotes to indicate a string; otherwise if you type doubles around anything, such as "raw_input()", it will think it is a function, variable, etc, and not text.

In this next example, I use double quotes and it won't work because it thinks there is a break in the quotes between "the" and "function" even though when you read it, your own mind can make perfect sense of it:

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

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

1

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

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

Это все равно, что оставить машину включенной, пока вы идете на кофе или спать! Опасен на многих уровнях
5

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

Вы можете добавить & quot ;; C: \ Python27 & quot; до конца вашей переменной среды Path. Таким образом, оно может быть сокращено до «cmd / k python -i» $ (FULL_CURRENT_PATH) ». - Именно то, что говорит ответ выше плюс полезный -i.
6

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

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

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

Кроме того, вы можете сделать это с time.sleep (время)

>>import time
>>print("The program will close in 5 seconds")
>>time.sleep(5)
3

На питоне 3

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

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

Похожие вопросы