Пауза в Python

Я запускаю сценарии Python из командной строки из панели задач Windows, имея ярлык, указывающий на интерпретатор Python с фактическим скриптом в качестве параметра.

После обработки сценария интерпретатор завершается, и окно вывода закрывается, что делает невозможным чтение выходных данных скрипта.

Каков самый простой способ сохранить окно интерпретатора открытым до нажатия любой клавиши?

В пакетных файлах можно остановить сценарий с паузой. Самое близкое к этому, что я нашел в python, – это raw_input() который является неоптимальным, потому что он требует нажатия клавиши возврата (вместо любой клавиши).

Есть идеи?

Один из способов – оставить raw_input() в конце, чтобы сценарий ожидал, что вы нажмете Enter до его завершения.

Попробуйте os.system("pause") – я использовал его, и это сработало для меня.

Обязательно включите import os в верхней части вашего скрипта.

Нет необходимости ждать ввода до закрытия, просто измените свою команду так:

 cmd /K python <script> 

Переключатель /K выполнит следующую команду, но оставьте окно интерпретатора команд открытым, в отличие от /C , которое выполняется и затем закрывается.

Самый лучший вариант: os.system('pause') <- на самом деле будет отображаться сообщение с сообщением «нажмите любую клавишу, чтобы продолжить», тогда как добавление только raw_input('') выведет сообщение, только курсор будет доступен.

не связанные с ответом:

os.system("some cmd command") – действительно отличная команда, так как команда может выполнять любые команды командного файла / cmd.

Один из способов – оставить raw_input () в конце, чтобы сценарий ожидал, что вы нажмете Enter до его завершения.

Преимущество использования raw_input () вместо msvcrt. * Материал состоит в том, что первое является частью стандартного Python (т.е. абсолютно кросс-платформенного). Это также означает, что окно сценария будет живым после двойного щелчка по значку файла сценария без необходимости делать

 cmd /K python <script> 

В Windows вы можете использовать модуль msvcrt .

msvcrt.kbhit () Возвращает true, если нажатие клавиши ожидает считывания.

msvcrt.getch () Прочитайте нажатие клавиши и верните полученный символ. На консоль ничего не отозвалось. Этот вызов будет блокироваться, если нажатие клавиши еще не доступно, но не будет ждать нажатия Enter.

Если вы хотите, чтобы он также работал в Unix-подобных системах, вы можете попробовать это решение, используя модули termios и fcntl .

Да, я знаю, что отправляю в старый поток, но хочу добавить свой голос за использование input () (3.x и выше).

Добавленный в конец моего сценария .py, он действительно препятствует открытию и немедленному закрытию окна консоли.

Что касается «проблемы» того, к какому ключу нажать, чтобы закрыть его, я (и 1000 других, я уверен) просто использую ввод («Нажмите Enter, чтобы закрыть»).

Спасибо, что позволил мне добавить мои 2 цента. 🙂

,

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

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

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

Внешний модуль WConio может помочь здесь: http://newcenturycomputers.net/projects/wconio.html

 import WConio WConio.getch() 
 import pdb pdb.debug() 

Это используется для отладки сценария. Должно быть полезно также сломать.

Получение python для чтения одного символа из терминала в небуферизованной манере немного сложнее, но вот рецепт, который это сделает:

Рецепт 134892: getch () – как небуферизованное чтение персонажа из stdin как в Windows, так и в Unix (Python)

Если вы напечатаете

 input("") 

Он будет ждать, пока они нажмут любую кнопку, и она будет продолжена. Также вы можете поместить текст между кавычками.