python struct模块深入理解_Python的Struct模块,用法以及个人理解

简介

python strtuct模块主要在Python中的值于C语言结构之间的转换。可用于处理存储在文件或网络连接(或其它来源)中的二进制数据。

顺序、格式字符

现在先不要看图表,稍后我们回来看。图片来自Python官网

2a83f954b51c766c27cd65a2d5a37d6b.png

b2604fc9f06e9336ea3fac5277c5f109.png

例子

用例子说明效果是最好的,我们用特定格式往二进制文件里写入数据,然后再读出数据。

#! 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

两个方法的第一个参数都是fmt,fmt就是上面的两个表格,我们根据实际内容(具体需求)写出fmt串,读取或写入文件

文中我们的fmt串是4s5si,具体含义对照上面表格:

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文件中读取内容

感谢

学习Python主要在:廖雪峰的官方网站、菜鸟教程这两个网站学习,很感谢他们!

也很感谢其他乐于分享贡献知识经验的人,谢谢

原文在自己的小博客:木鱼博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值