题
我试图像这样的东西
Output.py
print "Hello"
Input.py
greeting = raw_input("Give me the greeting. ")
print "The greeting is:", greeting
在cmd线
Output.py | Input.py
但是,返回一个 EOFError.可以有人告诉我我做错了什么?
谢谢你的帮助。
编辑
帕特里克*哈林顿 解决方案 但是我不知道为什么...
解决方案
我测试我的Windows的机器和它的工作如果你指定的蟒蛇exe:
C:\>C:\Python25\python.exe output.py | C:\Python25\python.exe input.py
Give me the greeting. The greeting is: hello
但我得到一个EOFError此外,如果运行的命令直接为:
output.py | input.py
我不知道到底这是为什么,我仍然看到这个人但至少这应该提供一个解决办法。它可能有一些做法的文件处理程序。py文件。
更新:那么,你知道。看起来喜欢这实际上是一个错误,在Windows stdin/stdout向可能无法正常工作时开始从文件的关联。这样的解决方法是如通过自己,帕特里克,你需要指定"蟒"将运行input.py否则它将不会重新定向从stdout output.py 到stdin为input.py 正确。
参考:
http://mail.python.org/pipermail/python-bugs-list/2004-August/024923.html
http://support.microsoft.com/default.aspx?kbid=321788
更新2:
改变这种行为,并使Windows管工作预计于stdin/stdout重新定向,可以添加这值的注册表(在测试我的箱子和验证了这一工作需要)。
- 开始注册编辑器。
找到然后点击了以下关键在注册表中:
此\软件\微软\Windows\CurrentVersion\政策\资源管理器
在编辑菜单点击增加价值,并随后添加以下 登记册的价值:
值名称: InheritConsoleHandles
数据类型: 数
基数:十进制的
值的数据:1退出注册的编辑。
其他提示
其更改为:
Output.py | python Input.py
的输出将是:
给我问候语。问候是:喂
下面就是为什么你得到的EOFError(从该的raw_input文档):
该函数然后读取来自线 输入,将其转换为字符串 (剥离的后换行),和 返回。当EOF被读取, 引发EOFError上升。
http://docs.python.org/library/functions HTML吗?突出的raw_input =#的raw_input
您可能需要使用 sys.stdin ,因为它提供了你可以使用读取一个文件对象,readlines方法的方法。
import sys
for greeting_line in sys.stdin.readlines():
print "The greeting is:", greeting_line.strip()