3

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

import os, sys

for line in sys.stdin:
    print line

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

4

2 回答 2

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()带有两个参数的文档,它实际上是从这样的文件中读取的示例之一。

于 2012-06-10T19:02:53.567 回答
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()时,它将从文件中读取一行并执行一次循环。

于 2012-06-10T18:55:09.107 回答