Пауза в Питоне - PullRequest
       50

Пауза в Питоне

46 голосов
/ 23 февраля 2009

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

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

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

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

Есть идеи?

Ответы [ 13 ]

52 голосов
/ 23 февраля 2009

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

41 голосов
/ 09 ноября 2010

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

Не забудьте включить import os в начало вашего скрипта.

13 голосов
/ 23 февраля 2009

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

cmd /K python <script>

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

9 голосов
/ 06 марта 2013

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

не имеет отношения к ответу:

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

7 голосов
/ 23 февраля 2009

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

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

cmd /K python <script>
4 голосов
/ 23 февраля 2009

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

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

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

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

2 голосов
/ 19 января 2017

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

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

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

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

.

1 голос
/ 21 сентября 2018

Есть простой способ сделать это, вы можете использовать функцию wait модуля клавиатуры. Например, вы можете сделать:

import keyboard
print("things before the pause")
keyboard.wait("esc") # esc is just an example, you can obviously put every key you want
print("things after the pause")
1 голос
/ 28 января 2017

В Windows 10 вставьте в начале:

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

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

0 голосов
/ 09 апреля 2014

Если вы наберете

input("")

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

...