2012-08-09 1736 views
12

因此,正如標題所說,我想要一個合適的代碼來關閉我的python腳本。 到目前爲止,我已經使用input('Press Any Key To Exit'),但是這樣做會產生錯誤。 我想要一個只關閉腳本而不使用錯誤的代碼。Python,按任意鍵退出

有沒有人有想法?谷歌給我的輸入選項,但我不希望 它關閉使用該錯誤:

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 
+1

'輸入=( '按任意鍵退出')'你的意思是'輸入( '按任意鍵退出')'?第一個將無所作爲。另外,嘗試使用raw_input()。 – Josiah 2012-08-09 04:04:14

+0

第一個將什麼也不做,但它不應該拋出任何錯誤..它只會重新綁定輸入到該字符串的名稱 – wim 2012-08-09 04:05:27

+0

@wim同意,這就是爲什麼我認爲他錯誤地鍵入問題,並建議嘗試'raw_input()'。 – Josiah 2012-08-09 04:06:54

回答

9

你試過raw_input()?這可能是因爲你在python 2.x上使用input()會得到一個語法錯誤,它會嘗試到eval

+0

是的,這修復它,但我看到有人回答這個3.0不是可用的,所以如果我升級,我又卡住了? – 2012-08-09 04:13:09

+0

@JoppeDnbCuyper:'raw_input'在Python 3.0中被重命名爲'input',所以如果你升級了,你只需要將'raw_input'的每個實例都改爲'input'。 – 2012-08-09 04:28:11

+1

輸入在<3中是非常危險的。 – 2012-08-09 04:32:17

-1

據我所知,沒有辦法'按任何鍵'。輸入和raw_input命令要求您按ENTER鍵。 (是的raw_input並不是一個Python 3.x的支持)

+0

查看LISTERINE和我的答案。 – 2012-08-09 16:26:09

13

如果你是在Windows下,那麼CMD命令pause應該工作,雖然寫着「按任意鍵繼續」

import os 
os.system('pause') 

的Linux的替代方法是read,一個很好的說明,可以發現here

4

我不鼓勵在Python平臺特定的功能,如果你能避免它們,但你可以使用內置的msvcrt模塊。

from msvcrt import getch 

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

這裏是通過按* nix中的任意鍵,而不顯示鍵和不按回車鍵結束的方式。 (一般方法的信用度爲Python read a single character from the user。)從圍繞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!' 
0

好吧,我在Linux Mint的17.1「蝴蝶夢」,我似乎已經想通了,正如你可能知道Linux Mint的自帶安裝了Python,你不能更新它也不能在其上安裝另一個版本。我發現預裝在Linux Mint中的python版本是2.7.6,因此下面的版本可以在2.7.6版本上正常工作。如果你添加了raw_input('Press any key to exit')它不會顯示任何錯誤代碼,但它會告訴你程序退出了代碼0.例如,這是我的第一個程序。 MyFirstProgram。請記住,這是我的第一個程序,我知道它很爛,但它是一個很好的例子,說明如何使用「按任意鍵退出」 順便說一句,這也是我在這個網站上的第一篇文章,很抱歉,如果我格式錯了。

+1

歡迎來到StackOverflow!你應該發佈這樣的短片段作爲你答案的一部分。編輯器提供代碼塊和內聯代碼工具來支持您。這會讓你的閱讀更容易讓其他人閱讀。詳細瞭解如何在[幫助中心](http://stackoverflow.com/help/how-to-answer)上寫出一個好答案。 – 2015-03-08 19:02:59

1

這個遊戲有點遲,但我在幾年前寫了一個圖書館來做這件事。它將pause()函數與可定製的消息以及更靈活的this answer啓發下的更一般的跨平臺getch()函數一起公開。

pip install py-getch安裝和使用它像這樣:

pause() 

此默認打印'Press any key to continue . . .'。提供自定義消息:

pause('Press Any Key To Exit.') 

爲了方便,還配備了在單一步驟調用sys.exit(status)變體:

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

Check it out

0

在Windows:

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

請添加一些解釋。 – BlackBeard 2018-01-29 07:19:34