>>> 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中并不那么简单所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)