python中struct模块

python中的struct主要是用来处理C结构数据的,读入时先转换为Python的字符串类型,然后再转换为Python的结构化类型,比如元组(tuple)啥的~。一般输入的渠道来源于文件或者网络的二进制流。

 1 import struct, os
 2 if os.path.isdir(os.getcwd() + r'\模块\struct'):
 3     pass
 4 else:
 5     os.makedirs(os.getcwd() + r'\模块\struct')
 6 F = open(os.getcwd() + r'\模块\struct\data.bin', 'wb')
 7 data = struct.pack('>i4sh', 7, bytes('spam'.encode('utf-8')), 8)
 8 data
 9 #b'\x00\x00\x00\x07spam\x00\x08'
10 F.write(data)
11 #10
12 F.close()
data = struct.pack('>i4sh', 7, 'spam', 8)#第7行如改为这句,会抛出异常:argument for 's' must be a bytes object必须要是字节类型。

 

读取:

import struct, os
F = open(os.getcwd() + r'\模块\struct\data.bin', 'rb')
data = F.read()
data
#b'\x00\x00\x00\x07spam\x00\x08'
values = struct.unpack('>i4sh', data)
values
#(7, b'spam', 8)

 

posted @ 2019-07-30 20:15  超越吧  阅读(339)  评论(0编辑  收藏  举报