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)