高清视频在线观看免费播放器-伊人日本-色九月综合-18禁止看的免费污网站-免费观看性行为视频的网站-天天碰天天操-久久精品国产欧美日韩99热-中文字幕在线视频不卡-国产偷人妻精品一区二区在线-国内精品久-伊人影院在线看-密臀av一区-久久综合五月丁香久久激情-福利一区福利二区-gg国产精品国内免费观看-国产精品 高清 尿 小便 嘘嘘

當(dāng)前位置: 首頁 >觀察 > 正文

環(huán)球消息!Python工具箱系列(三十七)

2023-06-26 23:39:21 來源:博客園

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

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


(資料圖片)

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

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

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

以上數(shù)據(jù),當(dāng)然可以以文本方式發(fā)送,但是對于帶寬的占用驚人。假設(shè)某個(gè)對于PM2.5進(jìn)行測量的傳感器,每隔一秒發(fā)送一次測量數(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é),對于傳感器這種體積小巧的嵌入式系統(tǒng),存儲空間極為有限,很快就會空間耗盡。因此,對非文本數(shù)據(jù)直接保存與讀取非常有必要。下面的代碼演示了傳感器類,以及傳感器測量數(shù)據(jù)的二進(jìn)制文件存儲與讀取的基本操作。

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開始的計(jì)數(shù)器        """        return self._counter    @counter.setter    def counter(self, value: int):        self._counter = value    @property    def pm25(self) -> float:        """        PM25測量值        Returns:            float: pm25的當(dāng)前測量值        """        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: 說明性文字        """        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ò)傳輸或者寫入文件        Returns:            bytes: 整合測量數(shù)據(jù)到字節(jié)流中        """        with BytesIO() as byio:            byio.write(struct.pack("

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

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

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

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

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

str類函數(shù)

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

repr類函數(shù)

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

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

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

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

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

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

標(biāo)簽:

返回頂部
高清视频在线观看免费播放器-伊人日本-色九月综合-18禁止看的免费污网站-免费观看性行为视频的网站-天天碰天天操-久久精品国产欧美日韩99热-中文字幕在线视频不卡-国产偷人妻精品一区二区在线-国内精品久-伊人影院在线看-密臀av一区-久久综合五月丁香久久激情-福利一区福利二区-gg国产精品国内免费观看-国产精品 高清 尿 小便 嘘嘘
  • <cite id="ecweg"><pre id="ecweg"></pre></cite>
    <rt id="ecweg"><acronym id="ecweg"></acronym></rt>
  • <rt id="ecweg"></rt>
    欧美视频第三页| 国产不卡的av| 欧美高清中文字幕| 草草草视频在线观看| 99精品视频国产| 日韩av影视大全| 欧美性猛交xxxx乱大交91| 亚洲 国产 图片| 国产又粗又猛大又黄又爽| 欧美国产日韩在线视频| 亚洲第一精品区| 成年在线观看视频| 欧美精品色婷婷五月综合| 成人精品小视频| 亚洲黄色av片| 欧美日韩福利在线| 成人毛片视频网站| a在线观看免费视频| 永久免费黄色片| 97超碰国产精品| av免费网站观看| 欧美日韩视频免费在线观看| www插插插无码免费视频网站| 91国视频在线| 99视频在线视频| 国产传媒久久久| 中文字幕第21页| 日韩一级片一区二区| 男人天堂网视频| 久久av喷吹av高潮av| 精品久久久久久无码中文野结衣| 国产精品无码av在线播放| 日本在线播放一区二区| 成人免费性视频| 国产精品嫩草影视| 日韩精品视频久久| 日本精品福利视频| 一区二区xxx| 欧美亚洲一二三区| 九一免费在线观看| 爱爱爱爱免费视频| 91看片就是不一样| 国产精品国产亚洲精品看不卡| 国产精品区在线| 日韩精品一区二区三区久久| 国内自拍中文字幕| 久久6免费视频| 爆乳熟妇一区二区三区霸乳| 黄色成人在线看| 黄色小视频大全| 伊人成人免费视频| 亚洲人视频在线| 男人天堂成人在线| 美女福利视频在线| 亚洲不卡中文字幕无码| 轻点好疼好大好爽视频| 99精品一区二区三区的区别| 色播五月综合网| 亚洲成人av免费看| 在线观看高清免费视频| 一级黄色香蕉视频| 亚洲一区二区三区四区五区xx| 91视频 -- 69xx| 成人免费毛片网| 18禁男女爽爽爽午夜网站免费 | 亚洲77777| 久久婷婷国产91天堂综合精品| 成 年 人 黄 色 大 片大 全| 久久国产精品网| 日韩在线一级片| 男人天堂999| 污污网站免费看| 亚洲精品乱码久久久久久动漫| 国产精品久久久久久9999| 肉色超薄丝袜脚交| 国产系列第一页| 免费拍拍拍网站| 丰满人妻中伦妇伦精品app| 波多野结衣50连登视频| 亚洲高清在线免费观看| 性久久久久久久久久久久久久| 午夜啪啪免费视频| 欧美亚洲日本一区二区三区| 免费在线激情视频| 天天摸天天舔天天操| 日韩a级黄色片| 亚洲中文字幕无码不卡电影| 性生活免费在线观看| 男人j进女人j| 18岁视频在线观看| 国产精品av免费| 中文字幕乱码人妻综合二区三区| 天天干在线影院| 蜜桃网站在线观看| 妞干网在线免费视频| 老汉色影院首页| 国产精品视频黄色| 800av在线免费观看| 亚洲天堂av线| 欧美久久久久久久久久久久久| 欧美午夜aaaaaa免费视频| 日韩精品一区二区三区电影| 99精品视频播放| 女人色极品影院| 日韩va在线观看| 国产天堂在线播放| 免费毛片网站在线观看| 亚洲第一区第二区第三区| av免费播放网址| av免费看网址| 可以免费看的黄色网址| 超碰在线播放91| 四虎永久在线精品无码视频| 黄色特一级视频| 欧美性视频在线播放| 天天爱天天操天天干| 鲁一鲁一鲁一鲁一色| 亚洲国产一二三精品无码| 午夜激情影院在线观看| 老头吃奶性行交视频| 给我免费播放片在线观看| 亚洲免费视频播放| 小说区视频区图片区| 欧美激情第四页| 在线免费观看av网| 樱花草www在线| www.桃色.com| 特级毛片在线免费观看| 日本不卡一区二区三区四区| 亚洲成人福利在线| 色天使在线观看| www.久久久久久久久久久| 色91精品久久久久久久久| 午夜免费福利视频在线观看| 欧美一级裸体视频| 8x8x成人免费视频| 亚洲激情在线看| 公共露出暴露狂另类av| 日韩精品手机在线观看| 国产freexxxx性播放麻豆| 丰满少妇久久久| 欧在线一二三四区| 国产精品视频中文字幕| 成年人黄色在线观看| 国产资源第一页| 亚洲精品蜜桃久久久久久| 欧美 日韩 国产在线观看| 激情内射人妻1区2区3区| jizzzz日本| 国产在线无码精品| 各处沟厕大尺度偷拍女厕嘘嘘 | 91免费视频黄| 丁香花在线影院观看在线播放| 亚洲中文字幕无码专区| 日本久久久久久久久久久久| 国产欧美综合一区| 欧美日韩在线一| 欧美又黄又嫩大片a级| 青青草视频在线视频| 国产无套粉嫩白浆内谢的出处| 亚洲三级在线观看视频| 国产一区二区视频播放| 国产理论在线播放| 久久精品xxx| www.亚洲高清| 乱妇乱女熟妇熟女网站| 天堂中文av在线| 色欲av无码一区二区人妻| 日韩第一页在线观看| 北条麻妃在线一区| 欧美黄色免费网址| 最新天堂在线视频| 欧美日韩亚洲一| 久久www视频| www.久久av.com| 男女视频一区二区三区| www.国产亚洲| 992tv人人草| 99免费视频观看| 三上悠亚久久精品| 国产一级片91| 99久久久无码国产精品性色戒| 我看黄色一级片| 国产麻花豆剧传媒精品mv在线| 日本人妻伦在线中文字幕| 男女污污视频网站| 亚洲综合av在线播放| 欧美精品无码一区二区三区| 131美女爱做视频| 激情小视频网站| 欧美大黑帍在线播放| 国产精品视频二| 国产专区在线视频| 国产精品免费看久久久无码| 丰满女人性猛交| 男女裸体影院高潮| av日韩一区二区三区| 久久国产午夜精品理论片最新版本| 超碰10000| 农民人伦一区二区三区|