我是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)只读取三个字节
答案 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")