從最細節開始,到最後結果,都是自己動手驗證,可以供大家參考(包括模塊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函數會顯示使用方法。