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 个字节
但是,偶尔 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您是否以二进制模式打开文件?
无论如何,读取文件的更好方法是使用
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.首先,我建议不要使用单词
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?
请参阅此页面:file.read
具体
See this page: file.read
Specifically