3

このプログラムは、コンソール入力を1行ずつエコーすると思いました:

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='')

2 つの引数を使用したドキュメントを参照してください。iter()実際には、このようなファイルからの読み取りが例の 1 つとして含まれています。

于 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()、ファイルから1行が読み取られ、ループが1回実行されます。

于 2012-06-10T18:55:09.107 に答える