将php数组传递给python,不起作用

时间:2014-09-15 10:10:16

标签: php python arrays

我正在尝试将编码为JSON的php数组发送到python脚本,它不起作用。 这是我的代码:

 <?php

    $data = array('as', 'df', 'gh');
    // $result = shell_exec('python /path/to/myScript.py ' . escapeshellarg(json_encode($data)));
    $result = system('pythomPath/python scriptPath/myscript.py ' . escapeshellarg(json_encode($data)).' 2>&1',$result);
    // Decode the result
    $resultData = json_decode($result, true);

    // This will contain: array('status' => 'Yes!')
    var_dump($resultData);
    ?>

python:

import sys, json
# Load the data that PHP sent us
try:
    data = json.loads(sys.argv[1])
except:
    print ("ERROR")
    sys.exit(1)
# Processing
result = data[0]
# Sending (to PHP)
print (json.dumps(result))

1 个答案:

答案 0 :(得分:0)

您发送给json.loads的数据不是有效的JSON,请检查。如果要将该数组转换为JSON,只需像在代码末尾那样使用json.dumps

但这不是唯一的错误。如果将此数组作为参数发送为sys.argv,则不会产生预期的结果。如果将数组发送到此脚本,它将以字符串形式处理此参数。

尝试使用此方法将其作为列表处理,而不是JSON。

data = eval(sys.argv[1])[0]

print (json.dumps(data))