从python脚本中获取变量的值

时间:2013-04-12 10:27:48

标签: php python json exec

我有一个返回json对象的python脚本。比方说,例如我运行以下内容:

exec('python /var/www/abc/abc.py');

并返回一个json对象,如何将json对象指定为php脚本中的变量。

示例python脚本:

#!/usr/bin/python
import sys 

def main():
    data = {"Fail": 35}
    sys.stdout.write(str(data))

main()

示例PHP脚本:

<?php

exec("python /home/amyth/Projects/test/variable.py", $output, $v);
echo($output);

?>

以上返回一个空数组。为什么这样?

我想使用exec方法从php调用上面的脚本,并希望使用python脚本返回的json对象。我怎样才能做到这一点?

更新

如果我使用另一个shell命令,上面的工作原理如下:

<?php

exec("ls", $output, $v);
echo($output);

?>

任何人都知道原因吗?

1 个答案:

答案 0 :(得分:2)

如果想法是你有一个Python脚本将JSON数据打印到标准输出,那么你可能正在寻找popen

像...一样的东西。

<?php

$f = popen('python /var/www/abc/abc.py', 'r');
if ($f === false)
{
   echo "popen failed";
   exit 1;
}
$json = fgets($f);
fclose($f);

...会将输出抓取到$json变量。

至于您的示例Python脚本,如果您想要将Python字典{"tests": "35"}转换为JSON并打印到标准输出,则需要将loads更改为{{1 }和dumpsreturn,所以它看起来像......

print