简单阅读fortran二进制数据在python中并不那么简单
发布时间:2020-12-20 12:29:26 所属栏目:Python 来源:网络整理
导读:我有FORTRAN代码的二进制输出文件.想在 python中阅读它. (使用FORTRAN读取并输出文本以读取python不是一个选项.长篇故事.)我可以以简单的方式阅读第一条记录: binfile=open('myfile','rb') pad1=struct.unpack('i',binfile.read(4))[0] ver=struct.unpack('
我有FORTRAN代码的二进制输出文件.想在
python中阅读它. (使用FORTRAN读取并输出文本以读取python不是一个选项.长篇故事.)我可以以简单的方式阅读第一条记录:
>>> binfile=open('myfile','rb') >>> pad1=struct.unpack('i',binfile.read(4))[0] >>> ver=struct.unpack('d',binfile.read(8))[0] >>> pad2=struct.unpack('i',binfile.read(4))[0] >>> pad1,ver,pad2 (8,3.13,8) 正好.但这是一个大文件,我需要更有效地做到这一点.所以我尝试: >>> (pad1,pad2)=struct.unpack('idi',binfile.read(16)) 这不会运行.给我一个错误并告诉我解压缩需要一个长度为20的参数.这对我来说没有意义,因为我上次检查时,4 8 4 = 16.当我输入并用16替换16时,它会运行,但这三个数字都填充了数字垃圾.有谁看到我做错了什么?谢谢! 解决方法
你得到的大小是由于对齐,尝试struct.calcsize(‘idi’)来验证对齐后大小实际为20.要使用没有对齐的本机字节顺序,请指定struct.calcsize(‘= idi’)并使其适应您的示例.
有关struct模块的更多信息,请查看http://docs.python.org/2/library/struct.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |