怎樣做網(wǎng)站的二維碼海豹直播nba
系列文章:
0、基本常用功能及其操作
1,20G文件,分類,放入不同文件,每個單獨(dú)處理
2,數(shù)據(jù)的歸類并處理
3,txt文件指定的數(shù)據(jù)處理并可視化作圖
4,上萬行l(wèi)og數(shù)據(jù)提取并作圖進(jìn)階版(本文)
5、上萬行數(shù)據(jù)提取并分類進(jìn)階版
6、..........?(待定)
?一,需求
?????????作測試時(shí),我們經(jīng)常需要對大量數(shù)據(jù)進(jìn)行提取并可視化,也就是作圖
? ? ? ? 上萬行的數(shù)據(jù),我們不方便提取到excel,復(fù)制時(shí)還會卡,一不小心,所以呢自動化作圖就非常方便。?
?????????類似下面這種的數(shù)據(jù),格式可能不盡相同,但是基本上每一行的格式一樣,我們需要提取時(shí)間并作圖,查看隨著次數(shù)的增加的變化率。
二、思路及其實(shí)現(xiàn)
? ? ? ? 1、文件操作,文件的讀取并每行提取
? ? ? ? 2、特定字符的提取,指定的時(shí)間,電壓,電流,或者次數(shù)等等等等
? ? ? ? 3、作散點(diǎn)圖,標(biāo)題,坐標(biāo)軸等等信息?
?上述操作不了解的同學(xué)呢,可以去系列文章0_基本操作,去參考查閱學(xué)習(xí)。
三、代碼
?作為進(jìn)階版,我把函數(shù)封裝了一下,可以更方便操作
def log_to_pic(log_path,start_char,end_char,title):# 定義計(jì)數(shù)器以跟蹤當(dāng)前處理的行數(shù)counter = 0# 定義一個臨時(shí)列表存儲當(dāng)前正在處理的值組current_chunk = []# #LOG_TO_PIC# 適用于每一行都有的情況下,每行格式都一樣,數(shù)據(jù)量非常大的那種with open(log_path, 'r') as file:for line in file:# 查找 "&]=&" 和 "&mS" 之間的字符串start_index = line.find(start_char)end_index = line.find(end_char, start_index)# 如果每行都有的情況下,if start_index != -1 and end_index != -1:# 提取字符串并去掉空格time_data = line[start_index + len(start_char):end_index].strip()# 嘗試將字符串轉(zhuǎn)換為浮點(diǎn)數(shù)try:current_chunk.append(time_data)except ValueError:# 當(dāng)轉(zhuǎn)換失敗時(shí),忽略這個數(shù)據(jù)continue# 散點(diǎn)圖數(shù)據(jù)為每組的最大值、最小值和平均值plt.scatter(range(len(current_chunk)), current_chunk, color='red', marker='o')# 設(shè)置圖表的標(biāo)題和圖例plt.title(title)plt.xlabel('CYCLE')plt.ylabel('TIME(US)')# plt.legend()# 顯示圖表plt.show()
下面是主函數(shù)
????????這里用到的數(shù)據(jù)的提取是字符串的識別,因?yàn)樵趦蓚€中間,同時(shí),可以應(yīng)對不同的文件,可自行修改。方便快捷
if __name__ == '__main__':import reimport oslog_path = './log/XXX/XXXX.txt'start_char = "SR2 ="end_char = "uS"title = 'XXXXXXXXX'log_to_pic(log_path,start_char,end_char,title)
四、問題及其改進(jìn)
?有時(shí)候數(shù)據(jù)為字符類型,我們需要轉(zhuǎn)成int類型,否則做的圖會有問題
# 安全地將每個元素轉(zhuǎn)換為intint_list = []for item in current_chunk:try:int_list.append(int(float(item))) # 首先嘗試將字符串轉(zhuǎn)換為浮點(diǎn)數(shù),然后轉(zhuǎn)換為整數(shù)except ValueError:print(f"無法轉(zhuǎn)換: {item}")