Ответ 1
Вы пробовали raw_input()
? Возможно, вы получаете синтаксическую ошибку, используя input()
на python 2.x, которая будет пытаться eval
получить то, что получает.
Итак, как говорится в заголовке, я хочу, чтобы правильный код закрывал мой 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
Вы пробовали raw_input()
? Возможно, вы получаете синтаксическую ошибку, используя input()
на python 2.x, которая будет пытаться eval
получить то, что получает.
Если вы находитесь в окнах, то команда 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.
Немного опоздал к игре, но пару лет назад я написал библиотеку, чтобы сделать именно это. Он предоставляет как функцию 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.')
Здесь можно закончить, нажав любую клавишу на * 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!'
Хорошо, я на 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 Это также мой первый пост на этом сайте, так что извините, если я отформатировал его неправильно.
в Windows:
if msvcrt.kbhit():
if msvcrt.getch() == b'q':
exit()
Насколько я знаю, нет способа "нажать любую клавишу". Команды ввода и raw_input требуют нажатия клавиши ENTER. (raw_input не поддерживается в Python 3.x)