我有一个返回json对象的python脚本。比方说,例如我运行以下内容:
exec('python /var/www/abc/abc.py');
并返回一个json对象,如何将json
对象指定为php脚本中的变量。
#!/usr/bin/python
import sys
def main():
data = {"Fail": 35}
sys.stdout.write(str(data))
main()
<?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);
?>
任何人都知道原因吗?
答案 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 }和dumps
到return
,所以它看起来像......
print