簡體   English   中英

由於 Python 程序中的 input() ,我收到了 EOFError 。 我什至不知道為什么我有它。 我該如何解決?

[英]I get an EOFError because of an input() I have in my Python program. I don't even know why I have it. How should I fix it?

在此之前,這里列出了我為嘗試理解這種情況而閱讀的內容:

如何在python中檢查eof

ubuntuforums

什么是eof,它在python中的意義是什么

什么錯誤問題依賴文件異常錯誤eoferror

python 文檔:異常

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

我嘗試更改代碼,但什么也沒發生。

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

請添加行

import sys
print(sys.stdin)

到腳本的頂部並報告您獲得的輸出。

首先,你在上面的代碼中有一個錯字......你elif 'q' in menu_options():輸入了elif 'q' in menu_options():而不是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()

這是我運行的腳本......你可以嘗試看看你是否仍然遇到那個錯誤......

嘗試使用 raw_input 而不是 input

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM