Ответ 1
Один из способов - оставить raw_input()
в конце, чтобы script ожидал, что вы нажмете Enter до его завершения.
Я запускаю сценарии Python из командной строки из панели задач Windows, имея ярлык, указывающий на интерпретатор Python с фактическим script в качестве параметра.
После обработки script интерпретатор завершается, и окно вывода закрывается, что делает невозможным чтение вывода script.
Каков самый простой способ сохранить окно интерпретатора открытым до нажатия любой клавиши?
В пакетных файлах можно приостановить script с паузой. Самое близкое к этому, что я нашел в python, - это raw_input()
, что является неоптимальным, потому что для этого требуется нажать клавишу возврата (вместо любой клавиши).
Любые идеи?
Один из способов - оставить raw_input()
в конце, чтобы script ожидал, что вы нажмете Enter до его завершения.
Попробуйте os.system("pause")
- я использовал его, и это сработало для меня.
Обязательно включите import os
в начало script.
Нет необходимости ждать ввода перед закрытием, просто измените команду следующим образом:
cmd /K python <script>
Переключатель /K
выполнит следующую команду, но оставьте окно интерпретатора команд открытым, в отличие от /C
, которое выполняется и затем закрывается.
Самый лучший вариант: os.system('pause')
< - на самом деле будет отображаться сообщение с сообщением "нажмите любую клавишу, чтобы продолжить", тогда как добавление только raw_input('')
не будет печатать сообщение, только курсор будет доступен.
не связан с ответом:
os.system("some cmd command")
- действительно отличная команда, так как команда может выполнять любые команды командного файла/cmd.
Один из способов - оставить raw_input() в конце, чтобы script ожидал, что вы нажмете Enter до его завершения.
Преимущество использования raw_input() вместо msvcrt. * материал состоит в том, что первый является частью стандартного Python (т.е. абсолютно кросс-платформенного). Это также означает, что окно script будет живым после двойного щелчка на значке файла script без необходимости делать
cmd /K python <script>
В Windows вы можете использовать модуль msvcrt
.
msvcrt.kbhit() Возвращаем true, если нажатие клавиши ожидает считывания.
msvcrt.getch() Прочтите нажатие клавиши и верните полученный символ. Ничего не повторилось на консоль. Этот вызов блокирует если нажатие клавиши еще не доступно, но не будет ждать Enter для нажатия.
Если вы хотите, чтобы он также работал в Unix-подобных системах, вы можете попробовать это решение с помощью termios и fcntl.
Да, я знаю, что я отправляю в старый поток, но я хотел бы добавить свой голос за используя вход() (3.x и вверх).
Добавлен в конец моего .py script, он действительно предотвращает открытие и закрытие окна консоли.
Что касается "проблемы" того, к какому ключу нажать, чтобы закрыть его, я (и 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()
Это используется для отладки script. Также полезно сломать.
Получение python для чтения одного символа из терминала небуферизованным образом немного сложнее, но вот рецепт, который сделает это:
Если вы наберете
input("")
Он будет ждать, пока они нажмут любую кнопку, и она будет продолжена. Также вы можете поместить текст между кавычками.