簡體   English   中英

閱讀一行時如何刪除EOFError:EOF?

[英]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.

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