日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 8號線攻城獅
[導讀]▼點擊下方名片,關注公眾號▼一切的開始在前幾年,如果你和嵌入式開發(fā)人員推薦Python,大概會是這樣一種場景:A:”誒,老王,你看Python開發(fā)這么方便,以后會不會用到嵌入式設備?“B:“別做夢了,那玩意兒速度賊慢,肯定滿足不了性能要求......”但近幾年,隨著半導體行業(yè)的迅...

點擊下方名片,關注公眾號






一切的開始



在前幾年,如果你和嵌入式開發(fā)人員推薦Python,大概會是這樣一種場景:

A:”誒,老王,你看Python開發(fā)這么方便,以后會不會用到嵌入式設備?“

B:“別做夢了,那玩意兒速度賊慢,肯定滿足不了性能要求......”

但近幾年,隨著半導體行業(yè)的迅猛發(fā)展,嵌入式處理器的性能有了很大幅度的提高。與此同時,Python語言本身也在不斷優(yōu)化。因此,在嵌入式領域引入Python已經成為了必然趨勢。

今天,作者就來總結一下使用Python處理物聯網行業(yè)中一種常見的文件格式:csv文件。





Python庫:csv



Python中集成了專用于處理csv文件的庫,名為:csv。

csv 庫中有4個常用的對象:

  • csv.reader:以列表的形式返回讀取的數據。

  • csv.writer:以列表的形式寫入數據。

  • csv.DictReader:以字典的形式返回讀取的數據。

  • csv.DictWriter:以字典的形式寫入數據。





讀取CSV文件



假設現在要讀取的csv文件內容如下:

可以看到,該文件的第一行表明數據類型,我們暫且稱之為header。從第2行開始,保存的是設備采集到的數據。


使用csv.reader讀取文件



# 導入 csv 庫import csv
# 以讀方式打開文件with open關于寫入,需要注意:"data.csv", mode="r", encoding="utf-8-sig") as f: ? ? ? ?# 基于打開的文件,創(chuàng)建csv.reader實例 ? ?reader = csv.reader(f)
? ?# 獲取第一行的header ? ?# header[0] = "設備編號" ? ?# header[1] = "溫度" ? ?# header[2] = "濕度" ? ?# header[3] = "轉速" ? ?header = next(reader)
? ?# 逐行獲取數據,并輸出 ? ?for row in reader: ? ? ? ?print("{}{}: {}={}, {}={}, {}={}".format(header[0], row[0], ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? header[1], row[1], ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? header[2], row[2], ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? header[3], row[3]))程序運行結果如下:

設備編號0: 溫度=31, 濕度=20, 轉速=1000設備編號1: 溫度=30, 濕度=22, 轉速=998設備編號2: 溫度=32, 濕度=23, 轉速=1005

使用csv.DictReader讀取文件



# 導入 csv 庫import csv
# 打開文件with open("data.csv", encoding="utf-8-sig", mode="r") as f:
? ?# 基于打開的文件,創(chuàng)建csv.DictReader實例 ? ?reader = csv.DictReader(f)
? ?# 輸出信息 ? ?for row in reader: ? ? ? ?print("設備編號{}: 溫度={}, 濕度={}, 轉速={}".format(row["設備編號"], ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? row["溫度"], ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? row["濕度"], ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? row["轉速"]))程序運行結果如下:

設備編號0: 溫度=31, 濕度=20, 轉速=1000設備編號1: 溫度=30, 濕度=22, 轉速=998設備編號2: 溫度=32, 濕度=23, 轉速=1005





寫入CSV文件



假設我們現在要創(chuàng)建一個csv文件,將數據保存為如下形式:



使用csv.writer寫入文件



# 導入 csv 庫import csv
# 創(chuàng)建列表,保存header內容header_list = ["設備編號", "溫度", "濕度", "轉速"]
# 創(chuàng)建列表,保存數據data_list = [ ? ?[0, 31, 20, 1000], ? ?[1, 30, 22, 998], ? ?[2, 32, 33, 1005]]
# 以寫方式打開文件。注意添加 newline="",否則會在兩行數據之間都插入一行空白。with open("new_data.csv", mode="w", encoding="utf-8-sig", newline="") as f: ? ? ? ?# 基于打開的文件,創(chuàng)建 csv.writer 實例 ? ?writer = csv.writer(f)
? ?# 寫入 header。 ? ?# writerow() 一次只能寫入一行。 ? ?writer.writerow(header_list)
? ?# 寫入數據。 ? ?# writerows() 一次寫入多行。 ? ?writer.writerows(data_list)

使用csv.DictWriter寫入文件



# 導入 csv 庫import csv
# 創(chuàng)建 header 列表header_list = ["設備編號", "溫度", "濕度", "轉速"]
# 創(chuàng)建數據列表,列表的每個元素都是字典data_list = [ ? ?{"設備編號": "0", "溫度": 31, "濕度": 20, "轉速": 1000}, ? ?{"設備編號": "1", "溫度": 30, "濕度": 22, "轉速": 998}, ? ?{"設備編號": "2", "溫度": 32, "濕度": 23, "轉速": 1005},]
# 以寫方式打開文件。注意添加 newline="",否則會在兩行數據之間都插入一行空白。with open("new_data.csv", mode="w", encoding="utf-8-sig", newline="") as f: ? ? ? ?# 基于打開的文件,創(chuàng)建 csv.DictWriter 實例,將 header 列表作為參數傳入。 ? ?writer = csv.DictWriter(f, header_list)
? ?# 寫入 header ? ?writer.writeheader()
? ?# 寫入數據 ? ?writer.writerows(data_list)

關于寫入,需要主語:

  • 在打開文件時,需要添加newline = ""。否則,會在每2行有效內容之間添加一行空白。

  • 如果要保存的內容有中文,而且之后需要用Excel打開文件,那么需要選用utf-8-sig編碼。如果使用utf-8編碼,會導致使用Excel查看文件時中文亂碼。

end


微信公眾號后臺回復關鍵字“加群”,添加小編微信,拉你入技術群。
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
關閉