利用json实现php-to-python进程间大数据通信
我的php代码:利用json实现php-to-python进程间大数据通信,php,python,json,interprocess,Php,Python,Json,Interprocess,我的php代码: <?php $data = array('as', 'df', 'gh'); $result=shell_exec("start test.py ".escapeshellarg(json_encode($data))); ?> 它尝试失败并显示错误。 如果将我的python代码更改为: import sys try: data=sys.argv[1] except: print "ERROR" print data, raw_input() 我
<?php
$data = array('as', 'df', 'gh');
$result=shell_exec("start test.py ".escapeshellarg(json_encode($data)));
?>
它尝试失败并显示错误。
如果将我的python代码更改为:
import sys
try:
data=sys.argv[1]
except:
print "ERROR"
print data,
raw_input()
我得到的输出是:[as,df,gh]
在传递json编码的数据时,我应该能够使用python的json.loads()方法对其进行解码。但是为什么它不起作用呢?我不知道它是怎么起作用的。但是能够根据我的要求调整节目 php代码:
<?php
$data = array('as', 'df', 'gh');
$result=shell_exec("start test.py ".escapeshellarg(json_encode($data)));
?>
<?php
$data = array('1'=>"as",'2'=>"df",'3'=>"gh");
$result=shell_exec("start test.py ".json_encode(json_encode($data)));
?>
并按要求得到输出:
{"1":"as","2":"df","3":"gh"}
{u'1': u'as', u'3': u'gh', u'2': u'df'}
as
有人对此有很好的了解,请解释。问题如下: 在Windows上,escapeshellarg()删除百分号,替换双精度 用空格括起来,并在字符串周围添加双引号 -> 我建议使用addslashes(…)
您可以发布PHP代码的输出吗?换句话说,打印出传递给shell的确切字符串代码>我得到的输出
“[as,df,gh]”
不是有效的json。至少在json_编码之后应该是[“af”、“df”、“gh”]
,在json_编码之后应该是'[“af”、“df”、“gh”]
escapeshellarg@MarcB解决办法是什么。我只是调用库函数,没有别的。我想发送一个由html表单创建的关联数组,并将其传递给python。但是json编码不起作用,我能做什么呢?检查一下为什么你的json_编码搞砸了。如果这真的是你的产品,那么你已经安装了一个主要的bug。是的。请解释一下。但是谢谢你的提示,它解决了我的问题。
{"1":"as","2":"df","3":"gh"}
{u'1': u'as', u'3': u'gh', u'2': u'df'}
as
exec("test.py " . addslashes(json_encode($json)) . " 2>&1", $output, $exit_code);