web-dev-qa-db-ja.com

Python、任意のキーを押して終了します

したがって、タイトルが示すように、適切なコードでpythonスクリプトを閉じます。これまで、input('Press Any Key To Exit')を使用しましたが、これを行うには、 error。エラーを使用せずにスクリプトを閉じるだけのコードが欲しいのですが。

誰かがアイデアを持っていますか? 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
14
Joppe De Cuyper

raw_input()を試しましたか? python 2.xでinput()を使用すると、構文エラーが発生する可能性があります。これにより、evalを取得しようとします。

12
wim

Windowsを使用している場合、cmd pauseコマンドは機能しますが、「続行するには任意のキーを押してください」と表示されます。

import os
os.system('pause')

Linuxの代替案はreadです。適切な説明は ここ にあります。

13
vikki

ゲームには少し遅れましたが、これを正確に行うために数年前にライブラリを作成しました。カスタマイズ可能なメッセージを含むpause()関数と、 this answer に触発されたより一般的なクロスプラットフォームの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.')
_

チェックアウト

3
Joe

私はpythonでプラットフォーム固有の関数を避けることができれば推奨しませんが、組み込みの msvcrt モジュールを使用できます。

from msvcrt import getch

junk = getch() # Assign to a variable just to suppress output. Blocks until key press.
3
LISTERINE
a = input('Press a key to exit')
if a:
    exit(0)
1
Nitwit

キーを表示せずに* nixで任意のキーを押して終了し、returnを押さずに終了する方法を次に示します。 (一般的な方法のクレジットは Pythonがユーザーから1文字を読み取る に移動します。)SOの周りを突っ込むことから、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!'
1
Matthew Adams

Linux Mint 17.1 "Rebecca"を使用していますが、理解できたようです。LinuxMintにはPythonがインストールされているので、アップデートしたり、別のバージョンをインストールしたりすることはできません。 Linux Mintにプレインストールされているpythonはバージョン2.7.6であるため、以下はバージョン2.7.6で確実に機能します。raw_input('Press any key to exit')これはエラーコードを表示しませんが、プログラムがコード0で終了したことを通知します。たとえば、これは私の最初のプログラムです MyFirstProgram 。それは私の最初のプログラムであることに注意してください悪いことはわかっていますが、「任意のキーを押して終了する」の良い例です。これは、このWebサイトへの私の最初の投稿でもあるので、間違ってフォーマットした場合は、申し訳ありません。

0
DGxInfinitY

windowsの場合:

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