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
原文在本身的小博客:木鱼博客