python的read(4)返回长度为1的字符串而不是4

2 投票
3 回答
741 浏览
提问于 2025-04-16 19:16

我有一个很大的二进制文件,里面存的是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

请查看这个页面:file.read

具体来说

还要注意,当处于非阻塞模式时,返回的数据可能会比请求的少,即使没有给定大小参数。

3

首先,我建议不要把变量命名为 file,因为这个词是一个内置的函数名。

其次,问问自己是要用二进制模式还是 ASCII 模式?

4

你有没有以二进制模式打开文件?

无论如何,读取文件有个更好的方法,就是使用 array.fromfile() 或者 NumPy。

撰写回答