Вопрос по any, python, python-2.7, key – Python, нажмите любую клавишу для выхода

14

Итак, как говорится в заголовке, я хочу, чтобы правильный код закрывал мой скрипт на 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
Итак, я исправил приведенный выше код, удалил =, я использую Python 2.7 кстати Joppe De Cuyper
@wim Согласен, поэтому я предполагаю, что он неправильно набрал вопрос и предложил попробоватьraw_input(). Josiah
input =('Press Any Key To Exit') Ты имеешь ввидуinput('Press Any Key To Exit')? Первый ничего не сделает. Также попробуйте использовать raw_input (). Josiah
stackoverflow.com/questions/10220943/… Alex W
первый ничего не будет делать, но он не должен выдавать никакой ошибки .. он просто перепривязывает ввод имени к этой строке wim

Ваш Ответ

8   ответов
3

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

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

from getch import pause
pause()

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

pause('Press Any Key To Exit.')

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

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

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

Проверьте LISTERINE и мои ответы.
Пожалуйста, добавьте несколько объяснений.
Добро пожаловать в StackOverflow! Вы должны опубликовать короткие фрагменты, как это, как часть вашего ответа. Редактор предоставляет блок кода и встроенные инструменты кода для поддержки вас. Это облегчит чтение других людей. Узнайте больше о том, как написать хороший ответ вhelp center.
Блин, ребята, вы вернулись через 6 лет. Я думаю, что до сих пор нет правильного ответа, ха Joppe De Cuyper
@DGxInfinitY от одного поклонника Linux Mint к другому .. Я усвоил трудный путь из того, что ты пытался сделать. Linux Mint и, возможно, любой Linux поставляются с «системным питоном», часто 2 и 3. Это может быть возможно, но вам не следует связываться с ним, обновлять его, понижать его, устанавливать в него модули. Используйте «virtualenv» с 'virtualenvwrapper', удобно, поддерживает чистоту системы Python. Иначе однажды вы можете что-то сделать с системным Python и перезагрузиться, и графический интерфейс и другие вещи будут повреждены.
0

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

Добро пожаловать в StackOverflow! Вы должны опубликовать короткие фрагменты, как это, как часть вашего ответа. Редактор предоставляет блок кода и встроенные инструменты кода для поддержки вас. Это облегчит чтение других людей. Узнайте больше о том, как написать хороший ответ вhelp center.
@DGxInfinitY от одного поклонника Linux Mint к другому .. Я усвоил трудный путь из того, что ты пытался сделать. Linux Mint и, возможно, любой Linux поставляются с «системным питоном», часто 2 и 3. Это может быть возможно, но вам не следует связываться с ним, обновлять его, понижать его, устанавливать в него модули. Используйте «virtualenv» с 'virtualenvwrapper', удобно, поддерживает чистоту системы Python. Иначе однажды вы можете что-то сделать с системным Python и перезагрузиться, и графический интерфейс и другие вещи будут повреждены.
-1

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

Проверьте LISTERINE и мои ответы.
0

без отображения клавиши иwithout pressing 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!'
12

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

import os
os.system('pause')

Альтернатива Linuxread, хорошее описание можно найтиВот

11

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

это прекрасно работает в Mac, чтобы сказать "нажмите клавишу ввода, чтобы продолжить"
@JoppeDnbCuyper:raw_input переименованinput в Python 3.0, так что если вы обновляетесь, вам просто нужно изменить каждый экземплярraw_input вinput
Да, это исправило это, но я видел, что кто-то ответил, что это не доступно в 3.0, так что, если я обновлюсь, я снова застрял? Joppe De Cuyper
вход очень опасен в & lt; 3.
0

if msvcrt.kbhit():
    if msvcrt.getch() == b'q':
        exit()
Пожалуйста, добавьте несколько объяснений.
Блин, ребята, вы вернулись через 6 лет. Я думаю, что до сих пор нет правильного ответа, ха Joppe De Cuyper
3

если вы можете их избежать, но вы можете использовать встроенныеmsvcrt модуль.

from msvcrt import getch

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

Похожие вопросы