php - python调用命令问题

标签 php python json

我对 python 脚本有一个小问题,该脚本从某个 Web 套接字获取数据,获取 Json 值,结果使用 os.system 发送到 php 脚本,如下所示:

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

但是结果被回显并且没有通过管道传送到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"
    }
}

最佳答案

试试这个:

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__);
}

关于php - python调用命令问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35430578/

相关文章:

php - 在 Codeigniter 中将事件记录与标准 SQL 查询混合

php - MySQL表关系,继承与否?

php - 将 Unicode 字符转换为 "\uxxxx"形式

python - 在多种条件下从数组中选择行

python - 如何在 QTableWidget 中使特定单元格可编辑并保留其余单元格不可编辑?

php - 初学者用 python 抓取 php 站点

python - 除了最后一列之外,我的数据框都有 NaN

PHP获取实际最大上传大小

android - 将 Retrofit RestAdapter.LogLevel 设置为 FULL 以外的任何值都会导致 Empty Response Body

javascript - 使用 jQuery 根据 Google Geocoding API JSON 响应的类型获取值