我试图像这样的东西

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重新定向,可以添加这值的注册表(在测试我的箱子和验证了这一工作需要)。

  1. 开始注册编辑器。
  2. 找到然后点击了以下关键在注册表中:

    此\软件\微软\Windows\CurrentVersion\政策\资源管理器

  3. 在编辑菜单点击增加价值,并随后添加以下 登记册的价值:

    值名称: InheritConsoleHandles
    数据类型:
    基数:十进制的
    值的数据:1

  4. 退出注册的编辑。

其他提示

其更改为:

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()
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top