0

我在谷歌上找了很多例子,但没有一个工作,我打印到一个通过出口管道 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。

4

3 回答 3

1

代替

ping 127.0.0.1 | pipetest.py

尝试

ping 127.0.0.1 | python pipetest.py

还要考虑其他建议,您可能不需要 .read()

于 2013-11-06T15:52:18.507 回答
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
于 2013-11-06T15:45:12.913 回答
0

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

感谢安德里斯

于 2013-11-13T21:11:53.740 回答