python调用命令问题

时间:2016-02-16 10:53:10

标签: php python json

我有一个python脚本的问题,来自某个Web套接字的脚本getdata,获取Json值,结果使用os.system发送到php脚本:

os.system('echo \' '+ result +' \' |  php sort.php')

但是result被回复,而不是通过管道传输给php脚本

出于调试目的,php脚本只执行此操作:

$input = readfile("php://stdin");
$data = json_decode($input, true);
var_dump($data['input']);

任何想法可以来自哪里?

PS:结果是一个像这样的纯json字符串:

{
    "error_code": 250,
    "user": {
        "id": "1",
        "login": "Talus",
        "password": "",
        "email": "",
        "display_name": ""
    },
    "session": {
        "id": "6",
        "user_owner": "1",
        "token": "3MJ9G53U3292DA4217ECCC201CE06D0B0AB0B5941580BA54",
        "last_activity": "2016-02-16 11:59:02",
        "in_game": "0"
    }
}

1 个答案:

答案 0 :(得分:1)

试试这个:

import subprocess

proc = subprocess.Popen(['php', '/path/to/sort.php', result],
    stdout=subprocess.PIPE,
    shell=True,
    stdout=subprocess.PIPE)

script_response = proc.stdout.read()

更新

这是另一种解决方案..

尝试使用python脚本:

subprocess.call(['php', '-f', '/path/to/sort.php', result])

然后像这样更新您的PHP脚本:

// Only execute via php-cli
if (php_sapi_name() == 'cli')
{
    if ($argc > 1)
    {
        // We use the index 1, because 0 == sort.php
        $result = json_decode($argv[1]);

        print_r($result);
    }
    else
    {
        exit('Invalid request @ '. basename(__FILE__) .':'. __LINE__);
    }
}
else
{
    exit('Invalid request @ '. basename(__FILE__) .':'. __LINE__);
}