python的read(4)返回长度为1的字符串而不是4
我有一个很大的二进制文件,里面存的是IEEE 32位浮点数。
在Python中,我用:
f = file.read(4)
while f !='':
if len(f) == 4:
data =struct.unpack('>f', f)
print data
f = file.read(4)
每次读取4个字节。
不过,有时候读取到的内容大小是1,这时候struct.unpack就会报错,说输入必须是4个字节的字符串。
这个文件的大小是4的倍数,而且这种情况在文件中发生了好几次。
这可能是什么原因呢?
3 个回答
3
3
首先,我建议不要把变量命名为 file
,因为这个词是一个内置的函数名。
其次,问问自己是要用二进制模式还是 ASCII 模式?
4
你有没有以二进制模式打开文件?
无论如何,读取文件有个更好的方法,就是使用 array.fromfile()
或者 NumPy。