Python的Struct模塊,用法以及我的理解

簡介

python strtuct模塊主要在Python中的值於C語言結構之間的轉換。可用於處理存儲在文件或網絡鏈接(或其它來源)中的二進制數據。html

順序、格式字符

如今先不要看圖表,稍後咱們回來看。圖片來自Python官網
圖片描述
圖片描述python

例子

用例子說明效果是最好的,咱們用特定格式往二進制文件裏寫入數據,而後再讀出數據。網絡

#! usr/bin/env python3
# -*- conding:utf-8 -*-

import struct

'''
數據格式
名字  職業   年
muyu  coder 2018
'''

name = b'muyu'
job = b'coder'
year = 2018


file = open(r'C:\Users\matzoh\Desktop\test.bin', 'rb+')

file.write(struct.pack('4s5si', name, job, year))
file.flush()

file.seek(0)

strBin = file.read()
print(strBin) # b'muyucoder\x00\x00\x00\xe2\x07\x00\x00'

content = struct.unpack('4s5si', strBin)
print(content) # (b'muyu', b'coder', 2018)
上述代碼的含義就是,以二進制格式打開一個文件,以指定格式寫入一個二進制串,再從文件取出二進制串,再把取出的串 翻譯成python數據

struct 最經常使用的方法有兩個:

struct.pack(fmt,v1,v2,…)
返回的是一個字符串,是參數按照fmt數據格式組合而成

struct.unpack(fmt,string)
按照給定數據格式解開(一般都是由struct.pack進行打包)數據,返回值是一個tuple學習


兩個方法的第一個參數都是fmtfmt就是上面的兩個表格,咱們根據實際內容(具體需求)寫出fmt串,讀取或寫入文件網站

文中咱們的fmt串是4s5si,具體含義對照上面表格:spa

4s表示4字節的字符串(可能咱們會遇到整數計數,例如 5h,意思是5個相同的h,意思和4s並不同)
5s含義同4s i表示整數(有符號)
具體解釋官方文檔也有

上述代碼運行結果:

b'muyucoder\x00\x00\x00\xe2\x07\x00\x00'
(b'muyu', b'coder', 2018)

記錄本身的學習筆記,好記性不如爛筆頭(並且還不是好記性...)翻譯

拓展

看完本篇文章,有興趣的能夠看:struct(廖雪峯)這篇文章,文章講怎麼從bmp文件中讀取內容code

感謝

學習Python主要在:廖雪峯的官方網站菜鳥教程這兩個網站學習,很感謝他們!orm

也很感謝其餘樂於分享貢獻知識經驗的人,謝謝htm

原文在本身的小博客:木魚博客

相關文章
相關標籤/搜索