从Python到PHP失去JSON值?

2024-09-02 20:44:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我在为一个奇怪的问题挣扎。我有一个Python脚本,可以通过PHP从页面访问它,并返回一个包含大约20个变量的JSON对象。除了一个总是返回空值的函数外,所有的函数都一直在工作。在服务器上直接运行Python脚本每次都返回一个值,但是php从来没有看到它。我尝试过输出为字符串、int,甚至是与预设值组合的字符串。张贴的代码只有两个显示,大部分功能值的长度被省略。(“cpul”是不起作用的。)

在PythonScript.py文件公司名称:

#!/usr/bin/python2.7

import os, json

def getCPUtemperature():
    res = os.popen('vcgencmd measure_temp').readline()
    tmp = (1.8 * float(res.replace("temp=","").replace("'C\n",""))) + 32
return(tmp)

# Return % of CPU used by user as a character string
def getCPUuse():
    val = str(os.popen("top -n1 | awk '/Cpu\(s\):/ {print $2}'").readline().strip(\
    )[2:4])
    return(val)

result = {'cput': CPU_temp, 'cpul': CPU_usage}
print json.dumps(result)

SSH终端输出:{“cpul”:“9”,“cput”:106.1600000000001}

在phpScript.php文件只需将结果传递到浏览器:

<?php
session_start();
try {
    $result = exec('/usr/bin/python /scripts/PyhtonScript.py');
    echo $result;
} catch (Exception $e) {
    echo '{"res" : "ERROR", "msg" : "Caught exception: ' . $e->getMessage() . '"}';
}
?>

浏览器输出:{“cpul”:“,”cput“:106.1600000000001}

如果我改变PythonScript.py文件“结果”是指:

result = {'cput': CPU_temp, 'cpul': 'foo'}

浏览器输出:{“cpul”:“foo”,“cput”:106.1600000000001}

如果我改变了PythonScript.py文件“结果”是指:

result = {'cput': CPU_temp, 'cpul': 'foo' + CPU_usage}

浏览器输出:{“cpul”:“foo”,“cput”:106.1600000000001}

如果我修改函数以输出一个int而不是一个字符串,我将得到相同的结果,但不带引号:

SSH终端输出:{“cpul”:9,“cput”:106.1600000000001}

浏览器输出:{“cpul”:“,”cput“:106.1600000000001}

该值是一个百分比,因此我希望在发送之前将其乘以100,但是如果我将函数修改为:

def getCPUuse():
val = str(os.popen("top -n1 | awk '/Cpu\(s\):/ {print $2}'").readline().strip(\
))
mod = int(val) * 100
return(mod)

SSH终端输出:{“cpul”:90,“cput”:106.1600000000001}

浏览器输出:无,黑屏

亚帕奇2/错误.log公司名称:

Traceback (most recent call last):
  File "/var/www/html/assets/scripts/info_lkp.py", line 49, in <module>
    CPU_usage = getCPUuse()
  File "/var/www/html/assets/scripts/info_lkp.py", line 29, in getCPUuse
    mod2 = int(mod)*10
ValueError: invalid literal for int() with base 10: ''
'unknown': I need something more specific.

在我没头发拔出来之前,你知道我错过了什么吗?如上所述,已发布的代码被截断,以删除不相关的工作类似函数及其相关输出。你知道吗


Tags: 文件函数pyfooos浏览器valresult
1条回答
网友
1楼 · 发布于 2024-09-02 20:44:19

这是一个Python错误

如果在发送之前将其乘以100,则在python脚本中会发生错误。你知道吗

价值正在流失,不是因为PHP。 这是因为python脚本没有返回有效的JSON。你知道吗

在此处阅读此错误ValueError: invalid literal for int() with base 10: ''

相关问题 更多 >