我在为一个奇怪的问题挣扎。我有一个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.
在我没头发拔出来之前,你知道我错过了什么吗?如上所述,已发布的代码被截断,以删除不相关的工作类似函数及其相关输出。你知道吗
这是一个Python错误
如果在发送之前将其乘以100,则在python脚本中会发生错误。你知道吗
价值正在流失,不是因为PHP。 这是因为python脚本没有返回有效的JSON。你知道吗
在此处阅读此错误ValueError: invalid literal for int() with base 10: ''
相关问题 更多 >
编程相关推荐