Python中的raw_input在sys.stdin.read()后抛出EOFError

8 投票
2 回答
3168 浏览
提问于 2025-04-17 05:47

之前有人问过类似的问题,可以查看这里,不过那些答案提供的解决办法对我来说不适用。

一封邮件是通过mutt传给一个脚本的,然后这个脚本从标准输入(STDIN)读取内容:

message = sys.stdin.read()
# message is parsed and URLs are printed as a list to choose from...
selected_index = raw_input('Which URL to open?')

我知道raw_input()会读取read()留下的文件结束符(EOF),但有没有办法“重置”标准输入呢?

2 个回答

0

试着用 sys.stdin.seek(0) 来重置标准输入。

参考链接:http://docs.python.org/library/fileinput.html

6

你试过这个吗:

message = sys.stdin.read()
sys.stdin = open('/dev/tty')
selected_index = raw_input('Which URL to open?')

这个在Linux系统上有效;也许在OSX系统上也能用。

撰写回答