I’m trying something like this
Output.py
print 'Hello'
Input.py
greeting = raw_input('Give me the greeting. ') print 'The greeting is:', greeting
At the cmd line
Output.py | Input.py
But it returns an EOFError. Can someone tell me what I am doing wrong?
Thanks for your help.
EDIT
Patrick Harrington solution works but I don’t know why…
I tested this on my Windows machine and it works if you specify the Python exe:
But I get an EOFError also if running the commands directly as:
I’m not sure exactly why that is, I’m still looking into this one but at least this should provide you with a workaround for now. It may have something to do with the way the file handler is invoked for .py files.
UPDATE: well, what do you know. Looks like this is actually a bug in Windows where stdin/stdout redirection may not work properly when started from a file association. So the workaround is as noted by myself and Patrick, you need to specify ‘python’ will be running input.py, otherwise it will not redirect stdout from output.py to the stdin for input.py correctly.
Reference:
http://mail.python.org/pipermail/python-bugs-list/2004-August/024923.html
http://support.microsoft.com/default.aspx?kbid=321788
UPDATE 2:
To change this behavior and make Windows pipes work as expected for stdin/stdout redirection, you can add this value to the registry (tested on my box and verified this works as desired).