python错误sys.stdin管道

时间:2013-11-06 15:38:37

标签: python subprocess pipe sys

我正在寻找谷歌很多的例子,但没有工作,我打印到通过出口管道ms-dos的文件,但这会抛出一个错误,好像我的文件无法读取sys.stdin,我把代码:

import sys
line = sys.stdin
for l in line.read():
   print l

和ms-dos我写了以下内容:

ping 127.0.0.1 | pipetest.py
上面的

控制台告诉我,我在“for”的行中有错误并显示:

  

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

我使用python2.7和windows。

3 个答案:

答案 0 :(得分:1)

这有效:

import sys
lines = sys.stdin
for l in lines:
   print l

但是,由于Python如何迭代文件,您可能会遇到缓冲问题。如果你想立即读取每一行,你应该使用readline()代替:

import sys
lines = sys.stdin
for l in iter(lines.readline, ''):
    print l

答案 1 :(得分:1)

而不是

ping 127.0.0.1 | pipetest.py

ping 127.0.0.1 | python pipetest.py

另外考虑其他建议,你可能不需要.read()

答案 2 :(得分:0)

代码更正:ping 127.0.0.1 | python pipetest.py

感谢Andris