python错误sys.stdin管道

python错误sys.stdin管道,python,subprocess,pipe,sys,Python,Subprocess,Pipe,Sys,我在google中查找了很多示例,但都不起作用,我打印到一个通过ms dos出口管道的文件,但这给我带来了一个错误,好像我的文件无法读取sys.stdin,我输入了代码: import sys line = sys.stdin for l in line.read(): print l dos女士,我写了以下内容: ping 127.0.0.1 | pipetest.py 上面的控制台显示我在“for”行中有错误,并显示: IOError:[Errno 9]错误的文件描述符 我使用py

我在google中查找了很多示例,但都不起作用,我打印到一个通过ms dos出口管道的文件,但这给我带来了一个错误,好像我的文件无法读取sys.stdin,我输入了代码:

import sys
line = sys.stdin
for l in line.read():
   print l
dos女士,我写了以下内容:

ping 127.0.0.1 | pipetest.py
上面的控制台显示我在“for”行中有错误,并显示:

IOError:[Errno 9]错误的文件描述符

我使用python2.7和windows。

这可以:

import sys
lines = sys.stdin
for l in lines:
   print l
但是,由于Python对文件的迭代方式,您可能会遇到缓冲问题。如果要立即阅读每一行,则应使用readline():

而不是

ping 127.0.0.1 | pipetest.py
试一试


也考虑另一个建议,您可能不需要。Read())/P> < P>代码正确:<代码> ping 127.0.0.1πPython PiestTest.Py


感谢Andris

它没有修复
“错误的文件描述符”
错误。顺便说一句,你可以在iter(sys.stdin.readline,'')中使用
:打印行,而不是
循环。编辑,谢谢。在Windows7上,我没有得到“坏文件描述符”,不知道该怎么做。表示它可能会修复
EOFError
,但OP具有不同的
IOError(EBADF)
错误。@J.F.Sebastian Windows 7+Python 2.7.3为我提供了与OP完全相同的
IOError:[Errno 9]错误文件描述符。您链接的问题实际上导致了一个
EOFError
。是的,我错了。(该链接来自)因此它可能也为这种情况提供了解决方案)。您可以不重复它
ping 127.0.0.1 | pipetest.py
ping 127.0.0.1 | python pipetest.py