0

在 php 脚本中调用函数 shell_exec 来执行 python 脚本并将标准输出重定向到文件。这是我的一段代码:

shell_exec("pythonScript > progress.txt");

python 脚本每五秒在标准输出上写入一个新行。一切都成功了,但 python 脚本的输出仅在执行结束时写入文件,而不是每五秒一次。我也试过这段代码:

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

但我有同样的效果。我应该如何确保在生成标准输出时将其写入文件目录?

4

2 回答 2

1

问题很可能是由于您的 python 脚本中的缓冲造成的。要关闭stdoutpython 脚本中的缓冲,要么;

  • sys.stdout.flush()每次要确保将迄今为止的输出发送到文件时使用。

  • -u使用禁用stdout缓冲的选项启动 python 。在您的情况下,它可能应该在脚本中完成,替换第一行;

#!/usr/bin/python

(或类似的,取决于路径)

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

问题是您正在使用重定向运算符>,它将在每次运行时覆盖输出文件,这就是为什么您只看到一行(命令输出的最后一行)的原因。您需要使用>>附加到文件:

$ 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 回答