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

时间:2011-11-07 09:19:06

标签: python

类似的问题已经被问到before,但答案提出了一种不适用于我的情况的解决方法。

电子邮件从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,但有没有办法重置' STDIN?

2 个答案:

答案 0 :(得分:5)

你试过这个:

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

这适用于Linux;也许它也适用于OSX。

答案 1 :(得分:0)

尝试使用sys.stdin.seek(0)

重置STDIN

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