从最细节开始,到最后结果,都是自己动手验证,可以供大家参考(包括模块numpy matplotlib导入失败的解决方法)
1安装环境
去Python官网下载,我的电脑64位所以选择最新的版本Python3.8.2,因为我用2.7版本有问题,然后选择executable installer,下载后安装一路往下问题不大。
然后在电脑搜索 idle,打开编辑界面,在file中编译后,run->run module,或者快捷键F5运行结果。
先展示下结果,目的想把datalog.txt中的AttrData:后面的两个十六进制的数字提取出来,高八位在后,低八位在前,用图表展示出来比较形象
2代码实现
import re #导入模块
import numpy as np #导入numpy模块
import matplotlib.pyplot as plt #导入matplotlib模块
filename='pir.txt' #txt文件名
keystr=r"AttrData:" #关键字是AttrData: ,因为目的是把它后面的数字提取出来
count=0
tmpy=0
y=[]
pos=[]
with open(filename,'r') as f: #打开文件用open,类似C语言,得到一个文件指针f
for lines in f.readlines(): #readlines是读取文件的所有行,用for语句就是循环读,lines就代表当前这一行的内容
tmp=[str(i) for i in lines.split(',',-1)] #lines.split即把lines的内容通过逗号分开,分别储存在tmp中
for a in tmp: #然后再把tmp中的每一个字符串拿出来检查
m=re.search(keystr,a) #re.search()是关键字搜索功能(即我们上面的关键字),如果没搜索到就返回None
if m!=None: #所以如果m不等于None,就说明这个字符串有我需要信息
n=[str(i) for i in a.split(':',-1)] #然后通过冒号把这个字符串再拆解,冒号后面就是数字
nn=[str(i) for i in n[1].split(' ',-1)]# #然后再把后面的字符串通过空格再拆解,得到两个数字,和一个换行符
nn.remove('\n') #删掉换行符
count=count+1 #记录有效数据个数,然后下面通过int()函数把它转为数字类型
if len(nn)==1:
tmpy=(int(nn[0],16))
else :
tmpy=(int(nn[0],16))+(int(nn[1],16))*256
y.append(tmpy) #保存到y数组中,append是添加一个元素的意思
print(y) #然后把所有y打印出来,就是上面效果展示的左边
print(count)
x= np.linspace(0, count-1, len(y)) #然后给x赋值,从0到count,x每次递增1
plt.plot(x, y, label='linear') #把提取出来的作为y值,x轴递增1来展示y值的变化
plt.show() #展示图像,右边所示
蓝色为注释,可能会出现的问题,是导入模块出错,所以选择清华的资源:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy matplotlib
进入cmd,在Python安装目录里面的script目录下输入上面指令:
另外主要是模块的使用,函数的使用,推荐脚本之家或者菜鸟教程搜索对应的函数,比如搜索split函数会显示使用方法。
转载:https://blog.csdn.net/m0_37738150/article/details/106128390