2013-05-29 58 views
0

任何這裏之前是的東西的清單,我在努力,試圖瞭解這一情況看:我得到一個EOFError,因爲我的Python程序中有輸入()。我甚至不知道我爲什麼擁有它。我應該如何解決它?

how to check for eof in python

ubuntuforums

what is eof and what is its significance in python

whats-wrong-question-relied-on-files-exceptions-error-eoferror

python docs: exceptions

How-does-one-fix-a-python-EOF-error-when-using-raw_input

這裏是我的代碼:

#!/usr.bin/env python 

# Errors 
error1 = 'Try again' 

# Functions 
def menu(): 
    print("What would you like to do?") 
    print("Run") 
    print("Settings") 
    print("Quit") 
    # The line below is where I get the error 
    menu_option = input("> ") 
    if 'r' in menu_option: 
     run() 
    elif 's' in menu_option: 
     settings() 
    elif 'q' in menu_options(): 
     quit() 
    else: 
     print(error1) 
     menu() 

這裏是我的錯誤(幫助我與其他兩個錯誤將是非常好的你):

Traceback (innermost last): 
File "C:\Program Files\Python\Tools\idle\ScriptBinding.py", line 131, in run_module_event 
    execfile(filename, mod.__dict__) 
File "C:\Documents and Settings\MyUser\Desktop\MyProgram.py", line 73, in ? 
    menu() 
File "C:\Documents and Settings\MyUser\Desktop\MyProgram.py", line 24, in menu 
    menu_option = input("> ") 
EOFError: EOF while reading a line 

我試圖改變代碼,但沒有發生。

+0

你使用python2.x或python3.x? – mgilson

+2

你最近在做什麼?你爲什麼要發送EOF? – geoffspear

+0

你的程序應該交互式地等待輸入;你輸入了什麼?以空字符串作爲輸入,這可能會導致此錯誤。此外,您可能想使用'raw_input()'而不是'input()',因爲(在Python2中)第一個函數也會計算您輸入的表達式。 – Alfe

回答

1

這通常發生在/如果您以非交互方式運行Python腳本,例如通過從編輯器運行它。

請線條

import sys 
print(sys.stdin) 

添加到您的腳本的頂部,並彙報你得到的輸出。

+0

我得到相同的確切結果 –

+0

另外,「編輯」是什麼意思?你的意思是空閒嗎? –

+0

對不起,我有一個thinko,當然你需要打印'sys.stdin'。不,IDLE將開啓互動式會議。但其他編輯器(如Notepad ++,UltraEdit,EditPad Pro等)會在沒有定義'stdin'的情況下調用python.exe,因此從輸入讀取失敗。畢竟,如果沒有交互式窗口,你會在哪裏輸入你的輸入? –

0

首先,您在上面的代碼中存在拼寫錯誤...您輸入了elif 'q' in menu_options():而不是elif 'q' in menu_option:。 另外,上述其他人在運行時沒有得到任何錯誤的原因是因爲他們在定義它之後沒有調用函數(這是你的代碼所做的)。 IDLE不會評估函數的內容(語法除外),直到它在定義之後被調用。 我糾正了你所犯的錯字,並用pass語句替換了你的運行,設置和退出函數,併成功運行了腳本。唯一給我一個EOF錯誤的是輸入IDLE的文件結束組合,在我的情況下是CTRL-D(勾選'選項'>'配置空閒'>'密鑰'>自定義鍵綁定>查看'文件結束'旁邊的組合)。所以,除非你不小心按下組合鍵,你的程序應該正常的,如果你運行運行,設置和退出功能工作正常的(如果你就像使用IDLE)...

#!/usr.bin/env python 

error1 = 'Try again' 

def menu(): 
    print("What would you like to do?") 
    print("Run") 
    print("Settings") 
    print("Quit") 
    # The line below is where I get the error 
    menu_option = input("> ") 
    if 'r' in menu_option: 
     pass 
    elif 's' in menu_option: 
     pass 
    elif 'q' in menu_option: 
     pass 
    else: 
     print(error1) 
     menu() 
menu() 

這是我跑的腳本。 ..u可以嘗試,看看你是否仍然得到那個錯誤...

相關問題