对于标准输入,python cat(echo)等效

时间:2012-06-10 18:47:41

标签: python echo stdin

我认为这个程序将逐行回显我的控制台输入:

import os, sys

for line in sys.stdin:
    print line

不幸的是它等待EOF( Ctrl + D ),然后它产生输出。我应该如何修改我的程序以逐行获取输出?

2 个答案:

答案 0 :(得分:9)

Python 2.x:

for line in iter(sys.stdin.readline, ''):
    print line,

Python 3.x:

for line in iter(sys.stdin.readline, ''):
    print(line, end='')

请参阅iter()上有两个参数的文档,它实际上是从这样的文件中读取的一个例子。

答案 1 :(得分:4)

Python 2.x:

while True:
  sys.stdout.write(sys.stdin.readline())

Python 3.x:

while True:
  print(sys.stdin.readline(), end = "")

当您使用for line in file:语法时,Python会为您管理缓冲,这意味着您无法控制在循环开始执行之前将读取多少行。当你致电file.readline()时,它会从文件中读取一行并执行你的循环一次。