Python, Нажмите Любую Клавишу Для Выхода

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

у кого-нибудь есть идеи? 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

8 ответов


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


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

import os
os.system('pause')

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


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

from msvcrt import getch

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

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


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

import sys, termios, tty

stdinFileDesc = sys.stdin.fileno() #store stdin's file descriptor
oldStdinTtyAttr = termios.tcgetattr(stdinFileDesc) #save stdin's 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!'

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


в Windows:

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

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