简单阅读fortran二进制数据在python中并不那么简单

简单阅读fortran二进制数据在python中并不那么简单,第1张

概述我有FORTRAN代码的二进制输出文件.想在 python中阅读它. (使用FORTRAN读取并输出文本以读取python不是一个选项.长篇故事.)我可以以简单的方式阅读第一条记录: >>> binfile=open('myfile','rb')>>> pad1=struct.unpack('i',binfile.read(4))[0]>>> ver=struct.unpack('d',bin 我有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

总结

以上是内存溢出为你收集整理的简单阅读fortran二进制数据在python中并不那么简单全部内容,希望文章能够帮你解决简单阅读fortran二进制数据在python中并不那么简单所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194874.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存