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

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

Python工具箱系列(三十七)

2023-06-27 02:38:05 來源:博客園

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

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

◆通過有線、無線傳遞傳感器獲得的測量數(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è)某個對于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個字節(jié)。而如果能夠按照約定的格式直接發(fā)送二進(jìn)制數(shù)據(jù),則只需要20個字節(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:        """        計數(shù)器        Returns:            int: 從0開始的計數(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)前時點        Returns:            datetime: 當(dāng)前的時間        """        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是非常值得推薦的時間處理框架。python有內(nèi)置的時間處理框架,功能非常完善,但失之于亂與雜,掌握起來非常不易。而arrow則非常人性化,做到了拿來即用。其安裝過程非常簡單,直接pip install arrow即可。在示例程序中,為了能夠方便存儲,我們將時間戳直接用UNIX的timestamp來表示,轉(zhuǎn)換后為了保持精度,本例使用double(8字節(jié))存儲,如果要求不高,可以改為float(4字節(jié))。

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

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

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

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

str類函數(shù)

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

repr類函數(shù)

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

toBytes類函數(shù)具體展示了如何將類的屬性值轉(zhuǎn)換成為二進(jìn)制字節(jié)流,主要依靠python內(nèi)置的struct模塊。在內(nèi)存中模擬文件打開一個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é)流,重新生成各個sensordata_v1對象。

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

從圖中可以看出,二進(jìn)制文件確實節(jié)省空間,但人類不容易理解,必然借助于專用工具與代碼來管理。但即使計算機(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>
    精品丰满人妻无套内射| 中文字幕精品在线播放| 草草视频在线免费观看| 成人性生交视频免费观看| 美女黄色片视频| 国产精品一区二区羞羞答答| 999精品网站| 97公开免费视频| 午夜两性免费视频| 中文字幕1234区| 7777在线视频| 成人网站免费观看入口| 国内自拍在线观看| 蜜臀视频一区二区三区| 免费av不卡在线| 超碰人人爱人人| 69堂免费视频| 免费一区二区三区在线观看| 91插插插影院| 欧美一级视频在线播放| 日韩精品一区二区三区不卡| 岛国毛片在线播放| 影音先锋成人资源网站| 欧美久久久久久久久久久久久| 日韩av在线综合| 男女啪啪的视频| 99999精品视频| 婷婷视频在线播放| 国产精品沙发午睡系列| 亚洲一区二区中文字幕在线观看| 97在线国产视频| 色国产在线视频| 福利视频免费在线观看| 亚洲一区二区蜜桃| 欧美一区二区激情| 奇米视频7777| 国产在线青青草| 日韩视频在线免费播放| 波多野结衣作品集| 妞干网在线播放| 国内国产精品天干天干| 日韩欧美视频网站| 激情六月天婷婷| 午夜一区二区视频| 妺妺窝人体色www在线观看| 黄色网在线视频| 91视频福利网| 五月天开心婷婷| 国产视频一区二区视频| 欧美 日韩 国产一区| 国产一二三在线视频| 中国老女人av| 一级全黄肉体裸体全过程| 污污的网站免费| 男女无套免费视频网站动漫| 日本一区二区黄色| 91av资源网| 成年人视频网站免费观看| av女优在线播放| 久久人人爽人人爽人人av| 三级在线免费观看| 久久久久久av无码免费网站下载| 小早川怜子一区二区三区| 老司机午夜性大片| 特黄视频免费观看| 一区二区三区四区久久| 精品国产三级a∨在线| 91制片厂免费观看| 裸体大乳女做爰69| 国产精品videossex国产高清| 4444在线观看| xxxx18hd亚洲hd捆绑| 日本中文字幕在线视频观看| 91九色在线观看视频| 97av视频在线观看| 香蕉视频999| 青草全福视在线| 国产成人精品视频免费看| 成人在线观看黄| 午夜视频在线网站| 99er在线视频| 久草在在线视频| 欧美日韩视频免费在线观看| 国产 欧美 日韩 一区| 91黄色小网站| 黄瓜视频免费观看在线观看www| 亚洲精品少妇一区二区| av免费播放网址| 国产精品999.| 九九九九免费视频| 中文字幕第三区| 北条麻妃69av| 成人高清在线观看视频| 无码人妻丰满熟妇区96| 一级日本黄色片| 日日噜噜夜夜狠狠| 99久久免费观看| www.com黄色片| 韩日视频在线观看| 中文字幕一区二区在线观看视频| 国产无限制自拍| 性久久久久久久久久久久久久| 奇米精品一区二区三区| 女人高潮一级片| 欧美精品色婷婷五月综合| 国产资源中文字幕| 激情黄色小视频| 日本高清免费观看| 国产免费一区二区三区视频| 免费观看黄色的网站| 丝袜老师办公室里做好紧好爽| 少妇一晚三次一区二区三区| 潘金莲一级淫片aaaaa免费看| 欧美日韩黄色一级片| 四虎永久免费网站| 中文字幕精品一区二区三区在线| 青青草视频在线免费播放| 久久久久久久免费视频| www.国产视频.com| 成人3d动漫一区二区三区| 欧美日韩二三区| 日韩五码在线观看| 国产成人一区二区三区别| 天天久久综合网| www.cao超碰| 一级黄色片国产| 成人在线观看你懂的| 亚洲精品综合在线观看| 激情五月婷婷久久| 黄色片在线免费| 国产三级三级看三级| jizz欧美激情18| 日韩av卡一卡二| 亚洲视频在线不卡| 国产性生活免费视频| 国产精品久久国产| 水蜜桃色314在线观看| 高清在线观看免费| 日韩欧美xxxx| 手机精品视频在线| 国产爆乳无码一区二区麻豆| 又大又硬又爽免费视频| a级黄色一级片| 超碰av在线免费观看| 超碰在线公开97| 视色,视色影院,视色影库,视色网| 日韩中文在线字幕| 日本a级片免费观看| 污污的视频免费| 国产免费xxx| 久久久久久久久久久久久久国产| 欧美午夜aaaaaa免费视频| 超碰中文字幕在线观看| 青青青青草视频| 亚洲综合欧美激情| 天堂8在线天堂资源bt| 人妻无码视频一区二区三区| 亚洲欧美久久久久| 国产九色porny| 日本中文字幕二区| 女人天堂av手机在线| 国产在线观看中文字幕| 九一国产精品视频| aaaaaaaa毛片| 国内外免费激情视频| 欧美日韩午夜爽爽| 少妇一级淫免费播放| 僵尸世界大战2 在线播放| 欧美第一页浮力影院| 日本a视频在线观看| 99国产精品久久久久久| 少妇高潮喷水久久久久久久久久| 日韩av片免费观看| av视屏在线播放| 国产精品无码一区二区在线| 特级黄色录像片| gai在线观看免费高清| 欧美日韩第二页| 五十路熟女丰满大屁股| 成人高清在线观看视频| av污在线观看| 成人在线免费播放视频| 青青草精品视频在线| 丁香六月激情网| 在线观看av的网址| 999在线精品视频| 欧美特级aaa| 精品久久久噜噜噜噜久久图片| 欧美日韩性生活片| 青青草国产精品视频| 妞干网在线播放| av在线免费观看国产| 欧洲精品视频在线| 久久福利一区二区| 毛片av在线播放| 真人做人试看60分钟免费| 樱空桃在线播放| 日本一本中文字幕| 99热在线这里只有精品| 黄www在线观看|