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.pack(fmt,v1,v2,…)
返回的是一個字符串,是參數按照fmt數據格式組合而成struct.unpack(fmt,string)
按照給定數據格式解開(一般都是由struct.pack進行打包)數據,返回值是一個tuple學習
兩個方法的第一個參數都是fmt,fmt就是上面的兩個表格,咱們根據實際內容(具體需求)寫出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
原文在本身的小博客:木魚博客