[英]How to remove EOFError: EOF when reading a line?
基本上,我必須檢查特定模式是否出現在一行中。 如果是,我必須打印該行,否則不打印。 所以這是我的代碼:
p = input()
while 1:
line = input()
a=line.find(p)
if a!=-1:
print(line)
if line=='':
break
這段代碼似乎很好,並被接受為正確答案。 但有一個問題。 我在讀取代碼測試網站忽略的行時收到運行時錯誤 EOFError: EOF。
我有三個問題:1)為什么它被忽視了? 2)如何去除? 3)有沒有更好的方法來解決這個問題?
沒有什么是被忽視的。 根據文檔input
,當遇到文件結束條件時會引發 EOFError。 本質上, input
讓您知道我們已經完成了,沒有什么可閱讀的了。 你應該等待這個異常,當你得到它時,只需從你的函數返回或終止程序。
def process_input():
p = input()
while True:
try:
line = input()
except EOFError:
return
a = line.find(p)
if a != -1:
print(line)
if line=='':
return
VS 代碼修復:
我在使用 VS Code 時遇到了同樣的錯誤,這對我有用。 我已將 launch.json 文件中的“控制台”行修改為:
"console": "internalConsole"
我這樣做是希望每次(F5)運行我的程序時都不會打印路徑。 但是,此修改導致它在顯然不喜歡輸入功能的調試控制台中運行。
我已經把它改回了:
"console": "integratedTerminal"
在我的程序開始時,我只是使用此代碼清除終端屏幕(我在 Windows 中):
#windows command to clear screen
import os
os.system('cls')
現在,當我 (F5) 在 VScode 中運行我的程序時,它會在內置終端中執行,清除首先顯示的路徑垃圾,並像您期望的那樣工作,沒有例外。 我的猜測是,您使用的代碼測試網站正在某種調試控制台中運行,類似於 VSCode 中發生的情況,因為您的代碼在 repl.it ( https://repl.it/languages/python3 ) 上運行良好。 您的代碼沒有任何問題,並且此 EOF 錯誤沒有任何正常或預期。
您可以使用 EOFError 在代碼中使用 try-except 塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.