1

これに関するいくつかの質問に答えた8つの異なる方法を読んで試しました. Python でプロセスを開きましたが、プロセスがまだ終了していなくても、その出力を読みたいと思っています。通常、プロセスは少なくとも 1 分間、または割り込みが送信されるまで完了しません。何を試しても、出力を読み取ることができません。渡したコマンドと引数が機能することはわかっています。これを subprocess.call(cmd, args) に変更すると、すべてが画面に出力されるためです。また、プロセスが ps -ax で実行されていることも確認しました。これが私が試していることの例です( cat /dev/random は私のプロジェクトとは関係ありません):

proc = subprocess.Popen(["cat", "/dev/random"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print("Process started.")

これまでに失敗した私が試したことは次のとおりです。

for line in iter(p.stdout.readline, ''):
    strLine = str(line).rstrip()
    print(">>> " + strLine )
    sys.stdout.flush()

output, error = proc.communicate()
print output

while proc.poll() is None:
    print("Still waiting.")
    print(proc.stdout.readline(1))

これのバリエーションである私が試した解決策は他にもありますが、運はありません。stdout を変更せずに call 関数を使用すると、すべてがコンソールに正しく出力されます。私は何を間違っていますか?

Python 2.6 を使用しています。

4

1 に答える 1