0

PHP スクリプト内で関数 shell_exec を呼び出して Python スクリプトを実行し、stdout をファイルにリダイレクトします。これは私のコードの一部です:

shell_exec("pythonScript > progress.txt");

Python スクリプトは、5 秒ごとに標準出力に新しい行を書き込みます。すべてが成功しますが、python スクリプトの出力は、5 秒ごとではなく、実行の最後にのみファイルに書き込まれます。私はこのコードでも試しました:

shell_exec("pythonScript > progress.txt &");

しかし、私は同じ効果があります。stdout が生成されたときにファイル direttament に書き込まれるようにするにはどうすればよいですか?

4

2 に答える 2

1

この問題は、Python スクリプトのバッファリングが原因である可能性が最も高いです。stdoutPython スクリプトでバッファリングをオフにするには、次のいずれかを行います。

  • sys.stdout.flush()これまでの出力がファイルに送信されていることを確認したい場合はいつでも使用してください。

  • バッファリング-uを無効にするオプションで python を起動します。stdoutあなたの場合、おそらくスクリプト内で最初の行を置き換えて実行する必要があります。

#!/usr/bin/python

(またはパスに応じて同様)

#!/usr/bin/python -u
于 2012-10-04T11:18:40.617 に答える
0

>問題は、実行するたびに出力ファイルを上書きするリダイレクト演算子を使用していることです。そのため、1行(コマンドの出力の最後の行)しか表示されません。>>ファイルに追加するには、を使用する必要があります。

$ echo 'foo' > out.txt
$ echo 'bar' > out.txt
$ cat out.txt
bar
$ echo 'foo' >> out.txt
$ echo 'bar' >> out.txt
$ cat out.txt
bar
foo
bar
于 2012-10-04T11:08:51.230 に答える