成人精品水蜜桃_成人在线丰满少妇av_91亚洲国产高清_欧美日韩免费区域视频在线观看

首頁(yè) 資訊 > 洞察 > 正文

每日熱訊!Python工具箱系列(三十七)

二進(jìn)制文件操作(上)

python比較擅長(zhǎng)與文本相關(guān)的操作。但現(xiàn)實(shí)世界中,對(duì)于非文本消息的處理也很普遍。例如:

◆通過(guò)有線、無(wú)線傳遞傳感器獲得的測(cè)量數(shù)據(jù)。


(資料圖)

◆衛(wèi)星通過(guò)電磁波發(fā)送測(cè)量數(shù)據(jù)。

◆數(shù)據(jù)中心的數(shù)萬(wàn)臺(tái)服務(wù)器發(fā)送當(dāng)前CPU的占用率信息、內(nèi)存占用量等眾多指標(biāo)數(shù)據(jù)。

以上數(shù)據(jù),當(dāng)然可以以文本方式發(fā)送,但是對(duì)于帶寬的占用驚人。假設(shè)某個(gè)對(duì)于PM2.5進(jìn)行測(cè)量的傳感器,每隔一秒發(fā)送一次測(cè)量數(shù)據(jù),以文本方式發(fā)送消息,內(nèi)容如下:

"counter: 1, pm25: 170.24119426834042, timestamp: 2022-07-24 08:52:11.138894+00:00"

以上消息占用了81個(gè)字節(jié)。而如果能夠按照約定的格式直接發(fā)送二進(jìn)制數(shù)據(jù),則只需要20個(gè)字節(jié),可以大幅提升傳輸效率。此外,以文本方式在本地保存?zhèn)鞲衅鲾?shù)據(jù),則一天就需要81*86400/1024=6834M字節(jié),對(duì)于傳感器這種體積小巧的嵌入式系統(tǒng),存儲(chǔ)空間極為有限,很快就會(huì)空間耗盡。因此,對(duì)非文本數(shù)據(jù)直接保存與讀取非常有必要。下面的代碼演示了傳感器類,以及傳感器測(cè)量數(shù)據(jù)的二進(jìn)制文件存儲(chǔ)與讀取的基本操作。

import binasciiimport randomimport structfrom datetime import datetimefrom io import BytesIOfrom time import sleepimport arrowclass sensordata_v1():    def __init__(self):        utc = arrow.utcnow()        self._timestamp = utc.to("Asia/Shanghai")    @property    def counter(self) -> int:        """        計(jì)數(shù)器        Returns:            int: 從0開(kāi)始的計(jì)數(shù)器        """        return self._counter    @counter.setter    def counter(self, value: int):        self._counter = value    @property    def pm25(self) -> float:        """        PM25測(cè)量值        Returns:            float: pm25的當(dāng)前測(cè)量值        """        return self._pm25    @pm25.setter    def pm25(self, value: float):        self._pm25 = value    @property    def timestamp(self) -> datetime:        """        當(dāng)前時(shí)點(diǎn)        Returns:            datetime: 當(dāng)前的時(shí)間        """        return self._timestamp.datetime    def __str__(self):        """        以文字輸出相關(guān)內(nèi)容        Returns:            string: 說(shuō)明性文字        """        return f"counter: {self.counter}, pm25: {self.pm25}, timestamp: {self.timestamp}"    def __repr__(self):        """        輸出字節(jié)流的16進(jìn)制內(nèi)容        Returns:            string: 16進(jìn)制顯示相關(guān)數(shù)值        """        return str(binascii.hexlify(self.toBytes()))    def toBytes(self):        """        將相關(guān)數(shù)據(jù)轉(zhuǎn)換成為bytes,便于網(wǎng)絡(luò)傳輸或者寫(xiě)入文件        Returns:            bytes: 整合測(cè)量數(shù)據(jù)到字節(jié)流中        """        with BytesIO() as byio:            byio.write(struct.pack("

其中arrow是非常值得推薦的時(shí)間處理框架。python有內(nèi)置的時(shí)間處理框架,功能非常完善,但失之于亂與雜,掌握起來(lái)非常不易。而arrow則非常人性化,做到了拿來(lái)即用。其安裝過(guò)程非常簡(jiǎn)單,直接pip install arrow即可。在示例程序中,為了能夠方便存儲(chǔ),我們將時(shí)間戳直接用UNIX的timestamp來(lái)表示,轉(zhuǎn)換后為了保持精度,本例使用double(8字節(jié))存儲(chǔ),如果要求不高,可以改為float(4字節(jié))。

sensordata_v1類使用@property裝飾器來(lái)定義屬性。總共有3個(gè)屬性:

◆counter-計(jì)數(shù)器。從0開(kāi)始計(jì)數(shù)累加,后續(xù)保存到數(shù)據(jù)庫(kù)中時(shí)也方便檢索。

◆pm25-PM2.5測(cè)量值。在示例代碼中使用random.uniform模擬一個(gè)0到300的隨機(jī)浮點(diǎn)值,沒(méi)有什么太大的意義,保證每次不同即可。

◆timestamp-數(shù)據(jù)采集時(shí)的對(duì)應(yīng)時(shí)間。

str類函數(shù)

可以自定義,本例中用它來(lái)直觀的表示當(dāng)前的采集值。當(dāng)對(duì)sensordata_v1類的實(shí)例打印時(shí),就會(huì)自動(dòng)調(diào)用這個(gè)函數(shù)。

repr類函數(shù)

可以自定義,本例中用它來(lái)演示轉(zhuǎn)換成為字節(jié)流bytes時(shí)的16進(jìn)制值。對(duì)于程序員來(lái)說(shuō),16進(jìn)制來(lái)表示字節(jié)是比較自然的。

toBytes類函數(shù)具體展示了如何將類的屬性值轉(zhuǎn)換成為二進(jìn)制字節(jié)流,主要依靠python內(nèi)置的struct模塊。在內(nèi)存中模擬文件打開(kāi)一個(gè)BytesIO,并且依次寫(xiě)入struct.pack編碼后的字節(jié)流,最終統(tǒng)一輸出。

fromBytes類函數(shù)具體展示了如何從字節(jié)流反解成為對(duì)象的屬性值。struct.pack與struct.unpack成對(duì)出現(xiàn)。

toFile函數(shù)將編碼好的字節(jié)流寫(xiě)入二進(jìn)制文件。寫(xiě)入的模式為"wb",其中w代表全覆蓋寫(xiě)入的意思,b代表二進(jìn)制模式的意思。fromFile負(fù)責(zé)從二進(jìn)制文件讀回保存的字節(jié)流,重新生成各個(gè)sensordata_v1對(duì)象。

生成的二進(jìn)制文件,可以使用UltraEditor、InHex等。也可以直接使用vscode自帶的2進(jìn)制文件瀏覽器擴(kuò)展Hex Editor,顯示效果如下圖所示:

從圖中可以看出,二進(jìn)制文件確實(shí)節(jié)省空間,但人類不容易理解,必然借助于專用工具與代碼來(lái)管理。但即使計(jì)算機(jī)與網(wǎng)絡(luò)能力強(qiáng)悍如斯,二進(jìn)制文件與網(wǎng)絡(luò)上的字節(jié)流仍然必不可少,不可替代。

關(guān)鍵詞:

最近更新

關(guān)于本站 管理團(tuán)隊(duì) 版權(quán)申明 網(wǎng)站地圖 聯(lián)系合作 招聘信息

Copyright © 2005-2023 創(chuàng)投網(wǎng) - m.7778890.com All rights reserved
聯(lián)系我們:39 60 29 14 2@qq.com
皖I(lǐng)CP備2022009963號(hào)-3

成人精品水蜜桃_成人在线丰满少妇av_91亚洲国产高清_欧美日韩免费区域视频在线观看
精品国产自在久精品国产| 国产欧美日韩亚州综合 | 国产成人自拍高清视频在线免费播放| 欧美浪妇xxxx高跟鞋交| 国产成人av一区二区三区在线| 欧美电影免费观看完整版| 91在线视频播放| 中文字幕五月欧美| 一本到不卡精品视频在线观看| 狠狠色丁香婷综合久久| 久久伊人中文字幕| 亚洲精品一区二区三区蜜桃久| 亚洲成人你懂的| 欧美日韩美女一区二区| 97国产一区二区| 一卡二卡欧美日韩| 欧美日韩国产在线观看| 91一区在线观看| 亚洲美女在线国产| 欧美日韩国产综合久久| 欧美承认网站| 日本成人在线视频网站| 欧美α欧美αv大片| 亚洲黄色一区| 国内精品国产成人| 国产精品久久久久久久岛一牛影视| 麻豆成人精品| 成人国产精品免费观看视频| 亚洲精品国产成人久久av盗摄| 久久精品首页| 中文字幕乱码一区二区免费| 国产不卡免费视频| 亚洲一区二区毛片| 中文字幕一区二区5566日韩| 粉嫩aⅴ一区二区三区四区五区| 久久亚洲影院| 亚洲高清免费视频| 亚洲第一在线| 国产精品久久综合| 亚洲视频免费看| 欧美一区二区女人| 午夜在线一区| 99国产精品国产精品久久| 天堂蜜桃一区二区三区| 国产亚洲一区字幕| 欧洲一区二区三区在线| 黄色成人av网站| 国产成人综合在线观看| 亚洲成人av资源| 中文幕一区二区三区久久蜜桃| 欧美亚洲一区二区三区四区| 黑人一区二区三区四区五区| 国产精品资源网站| 午夜视频一区二区三区| 中文字幕欧美日韩一区| 欧美国产视频在线| 成人精品视频一区二区三区尤物| 欧美人与禽zozo性伦| 国产剧情在线观看一区二区| 欧美乱妇一区二区三区不卡视频| 美美哒免费高清在线观看视频一区二区 | 91久久精品一区二区三区| 日韩国产精品久久久久久亚洲| 美女日韩在线中文字幕| 日韩中文字幕亚洲一区二区va在线| 中文有码久久| 亚洲午夜精品网| 久久黄色影院| 精品亚洲欧美一区| 69堂精品视频| 99亚偷拍自图区亚洲| 久久综合色一综合色88| 欧美不卡在线| 亚洲欧美日韩国产中文在线| 亚洲精品欧美精品| 一区二区三区日韩欧美| 色综合久久66| 激情成人午夜视频| 欧美一区日韩一区| 91一区在线观看| 亚洲欧美在线高清| 亚洲在线一区| 久久99精品国产麻豆婷婷| 91精品久久久久久蜜臀| 午夜精品剧场| 日韩伦理免费电影| 国产精品乱码| 国产一区二区视频在线| 国产欧美1区2区3区| 亚洲欧洲日韩综合二区| 亚洲最新视频在线播放| 欧美日韩亚洲综合| 99re热这里只有精品视频| 1000精品久久久久久久久| 91黄色小视频| 99re视频这里只有精品| 美日韩精品视频| 国产婷婷精品| 欧美亚洲三区| 亚欧成人精品| 久久一区亚洲| 在线观看视频一区| 在线免费观看视频一区| 欧美色视频一区| 欧美午夜视频网站| 欧美日本一区二区在线观看| 欧美久久一二三四区| 777a∨成人精品桃花网| 欧美一二三区精品| 日韩亚洲欧美一区二区三区| 欧美r级在线观看| 国产视频亚洲色图| 亚洲国产精品成人综合色在线婷婷 | 在线视频中文字幕一区二区| 欧美中文字幕不卡| 欧美日韩成人综合天天影院 | 欧美三级三级三级| 欧美年轻男男videosbes| 欧美一区二区福利在线| 欧美成人高清电影在线| 国产日韩精品一区| 欧美经典一区二区| 亚洲欧美另类图片小说| 亚洲电影一区二区三区| 偷窥少妇高潮呻吟av久久免费| 裸体歌舞表演一区二区| 激情成人午夜视频| eeuss国产一区二区三区| a级高清视频欧美日韩| eeuss鲁一区二区三区| 欧美日韩18| 美女日韩在线中文字幕| 欧美在线一二三| 日韩三级高清在线| 国产日韩高清在线| 最新日韩av在线| 日韩和的一区二区| 美女网站一区二区| 北条麻妃一区二区三区| 女人香蕉久久**毛片精品| 亚洲伦理一区| 91久久人澡人人添人人爽欧美| 美女图片一区二区| 在线播放日韩导航| 亚洲成人av中文| 久久久午夜精品| 欧美三级中文字幕在线观看| 99亚洲伊人久久精品影院红桃| 96av麻豆蜜桃一区二区| 麻豆专区一区二区三区四区五区| 亚洲欧美日本韩国| 国产精品麻豆一区二区 | 激情亚洲成人| 色综合网色综合| 精品久久久久一区二区国产| 国产精品水嫩水嫩| 免费人成网站在线观看欧美高清| 国内不卡的二区三区中文字幕| 99精品1区2区| 午夜一区二区三视频在线观看| 欧美午夜精品久久久久久孕妇| 91精品国产美女浴室洗澡无遮挡| 精品国产青草久久久久福利| 一区二区三区四区不卡视频| 国模套图日韩精品一区二区 | 欧美一卡2卡三卡4卡5免费| 国产精品乱码一区二区三区软件| 免费av网站大全久久| 国产精品sm| 欧美视频一区在线| 亚洲特级片在线| 国产精品一区二区三区四区 | 久久久久久久久久电影| 精品福利一二区| 国产视频一区二区在线观看| 国产午夜精品福利| 久久一区二区三区四区| 久久免费看少妇高潮| 久久久久国产免费免费| 国产精品久久免费看| 亚洲日本电影在线| 亚洲电影中文字幕在线观看| 美国av一区二区| 国产一二精品视频| 成人黄色av电影| 欧美福利一区| 99成人精品| 久久久久中文| 欧美一级淫片007| 久久久久久久久蜜桃| 中文字幕乱码一区二区免费| 一区二区三区欧美日韩| 性做久久久久久免费观看| 久久99精品国产.久久久久 | 国产精品国产精品国产专区不蜜| 亚洲视频免费在线| 麻豆精品久久精品色综合| 国产成人亚洲综合a∨婷婷| 99久久99久久综合| 国产亚洲精品v|