16

タイトルが示すように、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
4

8 に答える 8

18

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

import os
os.system('pause')

Linuxの代替手段は、ここでread適切な説明を見つけることができます

于 2012-08-09T05:13:47.973 に答える
13

この構文エラーはinput、Python 2 での使用が原因で発生します。Python 2evalは、ターミナル プロンプトで入力されたものをすべて試行します。を押した場合enter、Python は基本的に空の文字列 を評価しようとします。eval("")これによりSyntaxError、通常の の代わりに が発生しNameErrorます。

「任意の」キーをエンター キーとして使用することに満足している場合は、raw_input代わりに次のように簡単に交換できます。

raw_input("Press Enter to continue")

Python 3 ではraw_input名前が に変更されたことに注意してくださいinput

検索でこの質問を見つけたユーザーで、任意のキーを押してプロンプトを終了し、使用enterに制限されないようにしたい場合は、クロスプラットフォーム ソリューションにサードパーティ ライブラリを使用することを検討してください。readcharでインストールできるヘルパー ライブラリをお勧めしpip install readcharます。Linux、macOS、Windows、および Python 2 または Python 3 で動作します。

import readchar
print("Press Any Key To Exit")
k = readchar.readchar()
于 2012-08-09T04:03:43.570 に答える
3

Python でプラットフォーム固有の関数を避けることができれば、それらを思いとどまらせますが、組み込みmsvcrtモジュールを使用することもできます。

from msvcrt import getch

junk = getch() # Assign to a variable just to suppress output. Blocks until key press.
于 2012-08-09T05:27:22.230 に答える
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)1 つのステップで呼び出すバリアントも付属しています。

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

それをチェックしてください

于 2015-11-28T01:10:14.510 に答える
2
a = input('Press a key to exit')
if a:
    exit(0)
于 2019-12-17T20:52:05.880 に答える
1

キーを表示せず、 return を押さずに *nix で任意のキーを押して終了する方法を次に示します。(一般的な方法の功績は、Python read a single character from the user にあります。) SO をいじってみると、このモジュールを使用して Windows でこの機能を複製できるようですが、msvcrtテストするためにどこにもインストールしていません。何が起こっているのかを説明するために過度にコメントしました...

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!'
于 2012-08-09T05:31:32.737 に答える
0

Linux Mint 17.1 "Rebecca" を使用していますが、わかっているようです。Linux Mint には Python がインストールされていることをご存じかもしれませんが、更新することも、その上に別のバージョンをインストールすることもできません。Linux Mint にプリインストールされている python はバージョン 2.7.6 であることがわかったので、以下はバージョン 2.7.6 で確実に動作します。追加raw_input('Press any key to exit')すると、エラー コードは表示されませんが、プログラムがコード 0 で終了したことがわかります。たとえば、これは私の最初のプログラムです。マイファーストプログラム。これは私の最初のプログラムであり、それがひどいことはわかっていますが、「Press any key to Exit」の使用方法の良い例です ところで、これはこの Web サイトでの最初の投稿でもあるので、フォーマットが間違っていたらごめんなさい。

于 2015-03-08T18:40:09.287 に答える