struct.unpack上的python错误

时间:2015-04-01 18:11:09

标签: python python-2.7

我是python的新手,我正在尝试使用unpack:

data = f.read(4)
AAA=len(data)
BBB=struct.calcsize(cformat)
print AAA
print BBB
value = struct.unpack(cformat, data)
return value[0]

只要AAA == BBB就可以运行,但有时,f.read只读取3个字节,然后出现错误。我尝试读取的文件中的实际值是26.它读取1-221中的所有值,除了26它出错,因为f.read(size)只读取三个字节

2 个答案:

答案 0 :(得分:1)

假设问题是"如何在没有错误的情况下阅读26?"

首先检查产生open()的{​​{1}}的参数。在Windows下,除非以二进制模式(f)打开文件,否则Python会假定该文件是文本文件。 Windows将文本文件中的字节值26(Ctrl + Z)视为文件结束标记,这是一个奇怪的inherited from CP/M

答案 1 :(得分:0)

您已在文本模式下打开二进制文件,并且您正在使用操作系统,其中区别很重要。尝试在打开文件时将b添加到mode参数:

f = open("my_input_file.bin", "rb")