Подтвердить что ты не робот

Python, нажмите любой ключ для выхода

Итак, как говорится в заголовке, я хочу, чтобы правильный код закрывал мой python script. До сих пор я использовал input('Press Any Key To Exit'), но то, что это делает, генерирует ошибку. Мне нужен код, который просто закрывает ваш script без использования ошибки.

Есть ли у кого-нибудь идеи? Google дает мне возможность ввода, но я не хочу, чтобы Он закрывается с использованием этой ошибки:

Traceback (most recent call last):
  File "C:/Python27/test", line 1, in <module>
    input('Press Any Key To Exit')
  File "<string>", line 0

   ^
SyntaxError: unexpected EOF while parsing
4b9b3361

Ответ 1

Вы пробовали raw_input()? Возможно, вы получаете синтаксическую ошибку, используя input() на python 2.x, которая будет пытаться eval получить то, что получает.

Ответ 2

Если вы находитесь в окнах, то команда cmd pause должна работать, хотя она читает "нажмите любую клавишу, чтобы продолжить"

import os
os.system('pause')

Альтернатива linux read, хорошее описание можно найти здесь

Ответ 3

Я бы отказался от функций платформы на python, если вы можете их избежать, но вы можете использовать встроенный модуль msvcrt.

from msvcrt import getch

junk = getch() # Assign to a variable just to suppress output. Blocks until key press.

Ответ 4

Немного опоздал к игре, но пару лет назад я написал библиотеку, чтобы сделать именно это. Он предоставляет как функцию pause() с настраиваемым сообщением, так и более общую кроссплатформенную getch() вдохновленную этим ответом.

Установите с помощью pip install py-getch и используйте его так:

from getch import pause
pause()

Это печатает 'Press any key to continue...' 'Press any key to continue...' по умолчанию. Предоставьте пользовательское сообщение с:

pause('Press Any Key To Exit.')

Для удобства он также поставляется с вариантом, который вызывает sys.exit(status) за один шаг:

pause_exit(0, 'Press Any Key To Exit.')

Проверьте это.

Ответ 5

Здесь можно закончить, нажав любую клавишу на * nix, без отображения клавиши и без нажатия возврата. (Кредит за общий метод переходит на Python читает один символ от пользователя.) Из-за того, что вы можете использовать модуль msvcrt для дублирования эта функциональность в Windows, но у меня ее нет нигде для тестирования. Прокомментировал, чтобы объяснить, что происходит...

import sys, termios, tty

stdinFileDesc = sys.stdin.fileno() #store stdin file descriptor
oldStdinTtyAttr = termios.tcgetattr(stdinFileDesc) #save stdin tty attributes so I can reset it later

try:
    print 'Press any key to exit...'
    tty.setraw(stdinFileDesc) #set the input mode of stdin so that it gets added to char by char rather than line by line
    sys.stdin.read(1) #read 1 byte from stdin (indicating that a key has been pressed)
finally:
    termios.tcsetattr(stdinFileDesc, termios.TCSADRAIN, oldStdinTtyAttr) #reset stdin to its normal behavior
    print 'Goodbye!'

Ответ 6

Хорошо, я на Linux Mint 17.1 "Ребекка", и я, похоже, понял это. Как вы знаете, Linux Mint поставляется с установленным Python, вы не можете его обновить и не можете установить другую версию поверх нее. Я узнал, что питон, который поставляется с предустановленной в Linux Mint версией 2.7.6, так что наверняка работа над версией 2.7.6. Если вы добавите raw_input('Press any key to exit'), он не отобразит никаких кодов ошибок, но он скажет вам, что программа вышла с кодом 0. Например, это моя первая программа. MyFirstProgram. Имейте в виду, что это моя первая программа, и я знаю, что это отстой, но это хороший пример того, как использовать "Нажмите любую клавишу для выхода", BTW Это также мой первый пост на этом сайте, так что извините, если я отформатировал его неправильно.

Ответ 7

в Windows:

if msvcrt.kbhit():
    if msvcrt.getch() == b'q':
        exit()

Ответ 8

Насколько я знаю, нет способа "нажать любую клавишу". Команды ввода и raw_input требуют нажатия клавиши ENTER. (raw_input не поддерживается в Python 3.x)