文件未正确解码

时间:2011-10-04 19:48:42

标签: python

我有一个以奇怪模式编码的文件。例如,

字符(1字节)|整数(4个字节)|双(8字节)|等...

到目前为止,我编写了下面的代码,但我还没弄清楚为什么仍然在屏幕上显示垃圾。任何帮助将不胜感激。

BRK_File = 'commands.BRK'
input = open(BRK_File, "rb")

rev = input.read(1)
filesize = input.read(4)
highpoint = input.read(8)
which = input.read(1)

print 'Revision: ', rev 
print 'File size: ', filesize
print 'High point: ', highpoint
print 'Which: ', which

while True
    opcode = input.read(1)
    print 'Opcode: ', opcode
    if opcode = 120:
         break
    elif
        #other opcodes

2 个答案:

答案 0 :(得分:6)

read()返回一个字符串,您需要解码才能获取二进制数据。您可以使用struct模块进行解码。

以下几行应该可以解决这个问题:

import struct
...
fmt = 'cid' # char, int, double
data = input.read(struct.calcsize(fmt))
rev, filesize, highpoint = struct.unpack(fmt, data)

您可能需要处理字节序问题,但struct会使pretty easy

答案 1 :(得分:0)

显示文件的内容以及它输出的“垃圾”会很有帮助。

input.read()返回一个字符串,因此您必须将正在阅读的内容转换为所需的类型。我建议查看struct模块。