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

发布于 2024-11-14 14:41:42 字数 362 浏览 3 评论 0原文

我有一个很大的 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 个字节

但是,偶尔 f 的大小为 1,struct.unpack 会抱怨其输入必须是大小为 4 的字符串。

文件大小可被 4 整除,并且这种情况会多次发生文件内的次数。

可能是什么原因造成的?

I have a large binary file of ieee 32bit floating point numbers.

In python I use:

f = file.read(4)
    while f !='':
        if len(f) == 4:
            data =struct.unpack('>f', f)
            print data
f = file.read(4)

to read it 4 bytes at a time

However, occasionally f would be size 1, and struct.unpack would complain that its input must be a string of size 4.

The filesize is divisible by 4, and this happens multiple times within the file.

What could be causing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

反话 2024-11-21 14:41:42

您是否以二进制模式打开文件?

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

Did you open the file in binary mode?

Anyway, a much better way to read your file is to use array.fromfile() or NumPy.

薯片软お妹 2024-11-21 14:41:42

首先,我建议不要使用单词 file 作为变量,因为它是一个 __builtin__ 函数。

其次,二进制模式还是ascii模式?

First of all, i recommend against the use of the word file as a variable, as it is a __builtin__ function.

Secondly, binary mode or ascii mode?

夜夜流光相皎洁 2024-11-21 14:41:42

请参阅此页面:file.read

具体

另请注意,在非阻塞模式下,即使没有给出大小参数,返回的数据也可能少于请求的数据。

See this page: file.read

Specifically

Also note that when in non-blocking mode, less data than was requested may be returned, even if no size parameter was given.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文