添加二进制头

时间:2015-10-28 00:03:44

标签: python-3.x

我有一个二进制数据文件我想附加一个标头来使用python。下面是我创建标题的代码,但我不确定如何将它添加到test.dat文件中。

import struct
import os
from struct import *

date = 20151027
version = 1
datatype = str.encode('P')
indextype = str.encode('I')
recct = int(os.path.getsize("H:\\test\\test.dat")/16)
delim = str.encode(' ')
filler = str.encode(' ')
delta = 'F'

pdate = pack('l', date)
pversion = pack('h', version)
pdatatype = pack('>s', datatype)
pindextype = pack('>s', indextype)
precct = pack('l', recct)
pdelim = pack('s', delim)
pfiller = pack('<2s', filler)

header = pdate+pversion+pdatatype+pindextype+precct,pdelim,pfiller 

1 个答案:

答案 0 :(得分:3)

读入文件,然后用标题写出文件。一定要使用二进制模式:

with open(r'H:\test\test.dat','rb') as f:
    data = f.read()
with open(r'H:\test\test.dat','wb') as f:
    f.write(header + data)

另外,您可以在一个声明中pack

header = struct.pack('lhssls2s',date,version,datatype,indextype,recct,delim,filler)

str.encode('P')'P'.encode()b'P'只是一种奇怪的方式。