我无法获得php来显示python脚本的全部结果,只能打印最后一个基本的print语句。我在这里做错什么了?为什么php不显示python脚本的输出?
php
$result = exec('python list.py');
echo $result;
list.py
import subprocess
print "start"
a = subprocess.Popen(["ls", "-a"], stdout=subprocess.PIPE)
a.wait()
result_str = a.stdout.read()
print result_str
print "stop"
该python脚本的命令行输出如下
start
...filename
...filename
...etc...etc
stop
执行python脚本的php输出仅为
停止播放
谢谢
发布于 2017-04-01 20:24:34
您需要将$result
作为param传递到exec()
中,否则只能得到最后一条语句。
exec('python list.py', $result);
print_r($result);
这将得到一个输出数组,$result[0]
将包含stop
,$result[sizeof($result)-1]
将包含stop
,两者之间的所有内容都将包含您的程序输出的其余部分。
发布于 2017-04-01 20:22:20
exec
将始终从命令的结果返回,最后一行。因此,如果您需要从执行的命令中获取每一行输出。然后,您需要如下所示:
$result = exec('python list.py', $ouput);
print_r($output)
根据exec文档
string exec ( string $command [, array &$output [, int &$return_var ]] )
如果存在
output
参数,则指定的数组将填充命令的每一行输出。该数组中不包含尾随空格(如\n )。注意,如果数组已经包含了一些元素,exec()将追加到数组的末尾。如果不希望函数追加元素,请在数组上调用unset(),然后将其传递给exec()。
https://stackoverflow.com/questions/43164524
复制相似问题