サブプロセスの出力をファイルにリダイレクトしようとしています。subprocess.Popen()IOリダイレクト
server.py:
while 1:
print "Count " + str(count)
sys.stdout.flush()
count = count + 1
time.sleep(1)
Laucher:
cmd = './server.py >temp.txt'
args = shlex.split(cmd)
server = subprocess.Popen(args)
出力はtemp.txt
が空のまま、画面に表示されます。 私は何が間違っていますか?
私はすでに書かれたプログラムの出力をキャプチャしようとしています。
私が使用することはできません。
server = subprocess.Popen(
[exe_name],
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
プログラムはフラッシュないかもしれないと。 代わりに私はfifoを介して出力をリダイレクトしようとしていました。これは、手動でserver.pyを起動してもうまく動作しますが、Popen()
がリダイレクトされていない場合は明らかに動作しません。 ps -aux
は、server.py
が正しく起動されたことを示しています。
これは機能します。通信は、サーバーが終了するまでリーダーをブロックしますが、今はリダイレクトできるので、サーバー出力をFIFOに送ることができます。 –
ここで '.communicate()'を呼び出す必要はありません。 'subprocess.check_call( 'command'、stdout = file)'が動作します。 – jfs