2014-10-10 254 views
1

我收到以下错误,当我运行此脚本,然后按CTR-d来结束我输入到程序:EOF错误从标准输入读取数据时 - Python3

的错误:

My-MacBook-Pro-2:python me$ python3 test.py 
>> Traceback (most recent call last): 
    File "test.py", line 4, in <module> 
    line = input(">> ") 
EOFError 

脚本

import sys 

while(1): 
    line = input("Say Something: ") 
    print(line) 

这究竟是为什么?

+0

已经什么都在'test.py'改变VS你复制和粘贴了什么?因为Traceback以及输出显示了一个完全不同的'input'命令。我无法在我的系统上复制此错误。 (按预期得到'KeyboardInterrupt'。) – 2014-10-10 21:19:05

+1

你确定没有发送CTRL + D吗?这会向标准输入发送一个EOF字符,这将解释您所看到的内容。 – dano 2014-10-10 21:21:04

+0

@dano我道歉,我的意思是键入CTRL + D.是的,基本上我的问题是如何在阅读stdin时处理EOF? – Apollo 2014-10-10 21:28:53

回答

1

当您使用input时,不需要发送EOF来结束输入;只需按下输入。 input被设计为读取直到发送换行符。

如果你正在寻找一种方式来打破while循环,你可以使用CTRL + d,只是赶上EOFError

try: 
    while(1): 
     line = input("Say Something: ") 
     print(line) 
except EOFError: 
    pass