python中的struct
我的机器学习教程「美团」算法工程师带你入门机器学习 以及 「三分钟系列」数据结构与算法 已经开始更新了,欢迎大家订阅~这篇专栏整合了这几年的算法知识,简单易懂,也将是我实体书的BLOG版。
欢迎大家扫码关注微信公众号「图灵的猫」,除了有更多AI、算法、Python相关文章分享,还有免费的SSR节点和外网学习资料。其他平台(微信/知乎/B站)也是同名「图灵的猫」,不要迷路哦~
struct是python(包括版本2和3)中的内建模块,它用来在c语言中的结构体与python中的字符串之间进行转换,数据一般来自文件或者网络。
常用方法
struct.pack(fmt,v1,v2,…)
返回的是一个字符串,是参数按照fmt数据格式组合而成。
struct.unpack(fmt,string)
按照给定数据格式解开(通常都是由struct.pack进行打包)数据,返回值是一个tuple
格式符
下面2张表来自官网
Character | Byte order | Size | Alignment |
---|---|---|---|
@
|
native | native | native |
=
|
native | standard | none |
<
|
little-endian | standard | none |
>
|
big-endian | standard | none |
!
|
network (= big-endian) | standard | none |
Format | C Type | Python type | Standard size | Notes |
---|---|---|---|---|
x
|
pad byte | no value | ||
c
|
char
|
string of length 1 | 1 | |
b
|
signed char
|
integer | 1 | (3) |
B
|
unsigned char
|
integer | 1 | (3) |
?
|
_Bool
|
bool | 1 | (1) |
h
|
short
|
integer | 2 | (3) |
H
|
unsigned short
|
integer | 2 | (3) |
i
|
int
|
integer | 4 | (3) |
I
|
unsigned int
|
integer | 4 | (3) |
l
|
long
|
integer | 4 | (3) |
L
|
unsigned long
|
integer | 4 | (3) |
q
|
long long
|
integer | 8 | (2), (3) |
Q
|
unsigned long long
|
integer | 8 | (2), (3) |
f
|
float
|
float | 4 | (4) |
d
|
double
|
float | 8 | (4) |
s
|
char[]
|
string | ||
p
|
char[]
|
string | ||
P
|
void *
|
integer | (5), (3) |
实例
理论性的东西看起来都比较枯燥,来个实例代码就容易理解多了。本例来实现往一个2进制文件中按照某种特定格式写入数据,之后再将它读出。相信通过这个理例子,你就能基本掌握struct的使用。
# -*- coding: utf-8 -*-
__author__ = 'djstava''''
数据格式为
姓名 年龄 性别 职业
lily 18 female teacher
'''import os
import structfp = open('test.bin','wb')# 按照上面的格式将数据写入文件中
# 这里如果string类型的话,在pack函数中就需要encode('utf-8')
name = b'lily'
age = 18
sex = b'female'
job = b'teacher'# int类型占4个字节
fp.write(struct.pack('4si6s7s', name,age,sex,job))
fp.flush()
fp.close()# 将文件中写入的数据按照格式读取出来
fd = open('test.bin','rb')
# 21 = 4 + 4 + 6 + 7
print(struct.unpack('4si6s7s',fd.read(21)))
fd.close()
运行上面的代码,可以看到读出的数据与写入的数据是完全一致的。
/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/djstava/Playground/flaskPy/test.py
(b'lily', 18, b'female', b'teacher')Process finished with exit code 0
参考资料
1、https://docs.python.org/2/library/struct.html
python中的struct相关推荐
- python中的struct模块
struct模块用于二进制和结构体之间的互相转化,此模块中大部分函数接受一个实现了Buffer协议的对象,最常见的实现了Buffer协议的对象包括bytes.bytearray等,大多数像byte数组 ...
- python中pack函数,python中struct.pack()函數和struct.unpack()函數
python中的struct主要是用來處理C結構數據的,讀入時先轉換為Python的字符串類型,然后再轉換為Python的結構化類型,比如元組(tuple)啥的~.一般輸入的渠道來源於文件或者網絡的二 ...
- 三步解决C语言中struct字节对齐问题,Python进阶篇-struct字节对齐问题
Python进阶篇-struct字节对齐问题 Python进阶篇-struct字节对齐问题 Python调用C的时候,会传递一些复杂的数据结构,例如结构体,这时候就会遇到各种各样字节对齐的问题.下边所 ...
- python中pack函数_关于pack()函数的文章推荐10篇 - pack
php读写二进制文件可以使用pack和unpack函数. 今天要处理一个二进制文件的问题,所以需要用一下,特意了解一下pack的用法,unpack用法与此类似. 简单来说,pack函数就是给一个目标格 ...
- python中struct_Python的Struct模块,用法以及个人理解
简介 python strtuct模块主要在Python中的值于C语言结构之间的转换.可用于处理存储在文件或网络连接(或其它来源)中的二进制数据. 顺序.格式字符 现在先不要看图表,稍后我们回来看.图 ...
- python中pack什么意思_Python struct.pack如何理解其原理
def setUTF(self, value): """ """ tag = '>h' if self.endian == HIGHT ...
- python中struct.unpack的用法
python中struct.unpack的用法 4/25/2009 12:18:21 PM Python中按一定的格式取出某字符串中的子字符串,使用struck.unpack是非常高效的. 1. 设置 ...
- python中struct time_Python之time模块
在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳(timestamp) 2)格式化的时间字符串(format_string) 3)结构化时间(struct_ti ...
- python中json dumps_python中json.loads,dumps,jsonify使用
search_info = {'id':132,'user_role':3} print type(search_info) #输出 #转为string用dumps print type(json.d ...
- 在Python中创建单例
这个问题不是为了讨论是否需要单例设计模式 ,是否是反模式,还是针对任何宗教战争,而是要讨论如何以最pythonic的方式在Python中最好地实现此模式. 在这种情况下,我定义"最pytho ...
最新文章
- ASP.net随机数应用实例
- 如何解决90%的问题?10位阿里大牛公布方法
- 【转载】FAT32文件系统详解
- Wannafly交流赛1: C. 腰带图(瞎搞)
- request获取各种路径
- @font-face 字体图标的应用
- linux压缩命令常用:tar,tgz,gzip,zip,rar
- 扣费克星 1.72 更新说明
- 仿钉钉流程设计(.net工作流)之普通流程模板配置
- thinkpad T580加装内存条
- PyCharm获取csv文件
- google浏览器安装视频插件的方法
- 动态规划从入门到放弃【1】
- 这些程序员搞笑段子,看了真的笑skr人!
- 职场人需要的2大礼物
- C++解决《无重复字符的最长子串》问题(滑动窗口(unordered_set),string)
- 网页设计作业——小米商城官网首页(1页) HTML+CSS+JavaScript web期末作业设计网页_清新淡雅个人网页大学生网页设计作业成品
- 梅西:世界杯是我最重要的奖杯;很高兴斯卡洛尼能够续约
- 几款开源的ETL工具及ELT初探
- 【音乐理论】音与音高 ( 音区 | 小字一组 | 小字组 | 大字组 )
热门文章
- linux service start|stop|restart
- 与走在创业路上的学子交流——记网维“海大快点”创业团队
- EF直接更新数据(不需查询)
- SQL导入/导出Excel
- Android开发中图表的使用
- (PPT素材)扁平图标、PNG免抠图小图片
- [JLOI2008] CODES
- jQuery图片垂直滚动焦点图
- Akka-Cluster(0)- 分布式应用开发的一些想法
- PAT甲题题解-1124. Raffle for Weibo Followers-模拟,水题