Python スクリプトでコンソール トレース ツールの出力を操作したいと考えています。そのため、ツールが stdout に書き込む各行を読み取り、その行で何かを実行して画面に出力したいと考えています。
私はこのスクリプトを持っています:
import sys
for l in sys.stdin:
print l
そして、次のようにトレース ツールを開始します。
qspy -c COM7 | my_script.py
問題は、初めてEnterを打ったときです。何も起こりません。Enter キーをもう一度押すと、ツールによって作成されたすべての出力が表示されますが、ツールも終了します (トレース ツールは任意の文字で終了します)。私は何を間違っていますか?
私は窓にいます。
編集:
私はすべての提案を試しましたが、ほとんど成功しませんでした:
まず、stdout に出力を生成するために、この小さなスクリプトを作成しました。
import time
while 1:
time.sleep(1)
print "test"
これはまったく機能しません(出力なし):
import sys
for line in sys.stdin:
print line,
sys.stdout.flush()
これも何もしません:
import fileinput, sys
for line in fileinput.input():
print line,
sys.stdout.flush()
これは機能しますが、QSPYではなく、テストスクリプトでのみ機能します。
import sys
for line in iter(sys.stdin.readline, ''):
print line,
sys.stdout.flush()
私は次のようにスクリプトを呼び出しました:
test.py | python -u my_script.py
また、次のことも行いました。
set PYTHONUNBUFFERED=1