raw_input()有什么问题(EOFError:读取行时的EOF)

时间:2014-01-27 15:38:51

标签: python pycharm

我正在使用python 2.7.6,并且在调用raw_input()时,存在异常

flight_name = raw_input('\nEnter the name of Flight: ')

我找到了解决方案,但为什么会出现这种异常?它是一个包吗?

try:
      flight_name = raw_input('\nEnter the name of Flight: ')
except (EOFError):
      break

我正在使用PyCharm。

3 个答案:

答案 0 :(得分:2)

您可以使用:

sys.stdin = open('/dev/tty')
answer = raw_input('Commit anyway? [N/y] ')

来源:https://stackoverflow.com/a/7437724/1465640

答案 1 :(得分:1)

你试图从标准输入中读取一些东西,但你没有得到任何东西,只有EOF。这实际上让你知道用户没有提供任何输入,你可以为这种情况做其他事情。

答案 2 :(得分:1)

这个答案

sys.stdin = open('/dev/tty')
answer = raw_input('Commit anyway? [N/y] ')
如果您之前已从代码中的sys.stdin中读取,则

非常有用。在这种情况下,raw_input行将抛出EOF错误而不等待用户输入,如果在raw_input之前设置sys.stdin = open('/ dev / tty'),它会重置stdin并允许用户输入工作。 (在python 2.7中测试)

## test.py
import sys
for line in sys.stdin:
  pass
#sys.stdin = open('/dev/tty')
raw_input("Are you sure?")

echo'abc'| python test.py

提出了什么:

EOFError:读取行时的EOF

直到您取消注释第2行到最后一行。