Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
利用json实现php-to-python进程间大数据通信_Php_Python_Json_Interprocess - Fatal编程技术网

利用json实现php-to-python进程间大数据通信

利用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代码:

<?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);