如何在读取一行时删除 EOFError: EOF?

新手上路,请多包涵

基本上,我必须检查特定模式是否出现在一行中。如果是,我必须打印该行,否则不打印。所以这是我的代码:

 p = input()
 while 1:
   line = input()
   a=line.find(p)
   if a!=-1:
     print(line)
   if line=='':
     break

此代码似乎不错,并被接受为正确答案。但有一个陷阱。我收到运行时错误 EOFError: EOF 在读取代码测试网站忽略的一行时。

我有三个问题:1)为什么它被忽视了? 2)如何删除它? 3)有没有更好的方法来解决问题?

原文由 Jeff 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 498
1 个回答

没有什么被忽视的。根据 文档 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

原文由 Giannis Spiliopoulos 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题