如何用 python 读取文件硬件信息

转载请注明:@小五义
一、实验目的
&&&&& 本文实验目的是定时获取树莓派CPU的温度、占用率及内存占用率,并其结果上传到yeelink网站,实现在线监控。
二、yeelink的简单介绍
&&&&& 1、注册yeelink。
&&&&& 2、进入用户中心,获取API key,如下图。
&&&&&&&&&&& &
&&&&& 3、添加设备:进入我的设备--增加新设备--填写后(注意这里的设备先自备设备),会生成新设备。
&&&&&&&&&&& &&
&&&&& 4、添加传感器
&&&&&&&&&&&
&&&&&&&&&&& 这里分数值型传感器、开关、泛传感器等,具体意思可参考API文档。本文只使用了数值型传感器。
三、获取CPU温度、占用率及内存使用情况及准备知识
1、CPU温度:vcgencmd measure_temp
2、CPU占用情况:top命令
3、内存使用情况也是通过top命令获取
4、利用python的requests模块将获取的数据post到yeelink网站。这里用的对应传感器的Url及ID
,具体获取方法,见下图:
&&&&&&&&&&&&&
这里是CPU温度传感器(我用temp来命令的)的url和ID(25322)。
注:requests模块的安装可参考或者。
四、代码实现
python2.7环境下实验成功:
import requests
import json,time,string
#获取cpu温度
def getcputemperature():
cputemp=os.popen('vcgencmd measure_temp').readline()
sumcputemp=cputemp.replace("temp=","").replace("'C\n","")
return sumcputemp
#获取CPU及内存使用情况
def getcpuused():
return(os.popen("top -n1"))
#apikey为用户id
apiheaders={'U-ApiKey':'0ef7fd65ed','content-type': 'application/json'}
#CPU温度使用 25322 传感器
cputemp_apiurl="http://api.yeelink.net/v1.0/device/14778/sensor/25322/datapoints"
#cpu 使用情况使用 25356 传感器
cpuused_apiurl="http://api.yeelink.net/v1.0/device/14778/sensor/25356/datapoints"
#内存占用率使用 25357 传感器
memeryused_apiurl="http://api.yeelink.net/v1.0/device/14778/sensor/25357/datapoints"
if __name__=='__main__':
#上传cpu温度
cpu_temp=getcputemperature()
cputemp_payload={'value':cpu_temp}
r=requests.post(cputemp_apiurl, headers=apiheaders, data=json.dumps(cputemp_payload))
print cpu_temp
#上传cpu占用率及内存使用率
tempcpuused=getcpuused()
for cpuline in tempcpuused:
if cpuline[:3]=="%Cp":
#cpulineused=cpuline.split(":")[1].split(",")[0].strip("us").split(" ")[1]
cpulineused=cpuline.split(":")[1].split(",")[0].split(" ")[-2]
cpuused_payload={'value':cpulineused}
r=requests.post(cpuused_apiurl, headers=apiheaders, data=json.dumps(cpuused_payload))
print "CPU USED %:"+cpulineused
if "Mem:" in cpuline:
#提取数值,仅用字符串操作时,发现在数值前后有多个不可见字符,这里没怎么搞清楚这些字符是些什么
memlineused=cpuline.split(":")[1].split(",")[1].strip("used").split(" ")[-2]
memlinetotal=cpuline.split(":")[1].split(",")[0].strip("total").split(" ")[-2]
memeryusedratio=float(str(memlineused))/float(str(memlinetotal))
memeryusedratiostr="%.2f"%(memeryusedratio*100)
memeryused_payload={'value':memeryusedratiostr}
r=requests.post(memeryused_apiurl, headers=apiheaders, data=json.dumps(memeryused_payload))
print memeryusedratiostr
print "================"
time.sleep(20)
五、运行结果
终端显示结果:
yeelink显示结果:
1、CPU 温度结果
2、CPU占用率结果
3、内存占用率结果
程序运行时间较短,所以以上曲线仅后半部分为测量情况。
&&欢迎加入讨论群:
阅读(...) 评论()java有writeInt、writeByte之类的方法使用,python呢? 谢谢!问题补充:嗯,现在用struct来转换二进制字符串到指定类型。请问如何读写中文?
另外保存的文件也可以由java程序的ReadUTF()方法读取中文,有解决方案吗?问题补充:碰到这样一个问题:
用java writeShort(1091),写入的是 \x04C
用python file.write(struct.pack("H", 1091)) 写入的是C\x04
有什么办法使python写入是 \x04C ? 以和java写入的一致。
可以的
java的writeUTF会在开头写入两个字节表示后面的文本长度,如写入“hello, 你好”这些文本,用16进制编辑器打开可以看到如下内容
00 0D 68 65 6C 6C 6F 2C 20 E4 BD A0 E5 A5 BD
前面两个字节,表示后面的13个字节就是文本内容
在Python中处理时只要,在前面写入两个字节,后面为文本内容, 用struct的pack处理一下就可以
#示例代码
# -*- coding: utf-8 -*-
from struct import *
f = open('utf.txt', 'w')
s = u'hello, 你好'
s = s.encode('utf')
ss = pack('&H%ds' % len(s), len(s), s)
f.write(ss)
f.close()
可以写个方法
def writeUTF(f, s):
&&& s = s.encode('utf')
&&& ss = pack('&H%ds' % len(s), len(s), s)
&&& f.write(ss)
不好意思,搞错了,用struct模块
from struct import *
# 连续写入一个int和byte,比如100和5,进行编码生成字符串
s = pack('=IB', 100, 5)
# s是一个字符串,你可以写入文件中
# 对这个s进行解码
result = unpack('=IB, s)
# return: (100, 5)
看下ctypes模块,可以把int, byte等类型转换成字符串写入,或者读出时转换成你想要的类型
已解决问题
未解决问题python获取各操作系统硬件信息的方法-中国学网-中国IT综合门户网站
本文实例讲述了python获取各操作系统硬件信息的方法。分享给大家供大家参考。具体如下:
1. windows
(WMI官网地址:http://pypi.python.org/pypi/WMI 或 点击此处本站下载。)
import wmi
w=wmi.WMI()
cpus=w.Win32_Processor()
for u in cpus:
print 'cpu id:',u.ProcessorId
运行结果如下:
cpu id: BFEBFBFF0001067A
cpu id: BFEBFBFF0001067A
直接读取:
文件下面的信息,都是些文本文件。如读取cpu信息:
/proc/cpuinfo
使用subprocess.Popen()
执行相应的命令:
/usr/sbin/system_profiler SPHardwareDataType
然后再得到输出分析结果
希望本文所述对大家的Python程序设计有所帮助。
本文相关搜索如何用python语言编写脚本文件,实现从ODB文件中读取每种材料对应的所有单元号?_百度知道
如何用python语言编写脚本文件,实现从ODB文件中读取每种材料对应的所有单元号?
这是一道待解决的难题
您的回答被采纳后将获得系统奖励20(财富值+经验值)+难题奖励30(财富值+经验值)
其他类似问题
python的相关知识
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 python读取csv 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信