我有一个来自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,ver,pad2)=struct.unpack('idi',binfile.read(16))
这段代码无法运行。报错信息告诉我,unpack函数需要一个长度为20的参数,但是这对我来说没有任何意义,因为根据我上一次检查的结果,4+8+4=16。当我不得不放弃并将数字16替换为20时,虽然程序可以运行,但是三个数字却被填充了数值垃圾。有人看到我错在哪里吗?谢谢!