我使用Fortran以以下格式将数据写入二进制文件
open(unit=99,form='unformatted',status='unknown')
do i=1,N
write(99) (i),(A(i)),(B(i))
enddo
close(99)
这里,A和B是双精度阵列。 如何在python中读取此二进制数据文件
PS:到目前为止,我尝试了以下步骤来读取数据
with open('fort.99', 'rb') as binfile:
data=binfile.read()
虽然文件读取成功,但我无法在此数据上使用numpy
函数,这是我在大多数分析中的首选
更新的答案
我在Numpy中对此进行了更多的研究,您可以像这样更清晰地阅读该文件-下面的信息仍然适用,并解释了它的工作原理:
原始答案
我更改了您的程序以获得一些可识别的数据:
然后我查看文件大小,它是3584字节,所以我将其除以128,得到每个fortran
WRITE
的字节数为28因此,使用
xxd
检查数据如下:因此,每个fortran写操作有28个字节,每个记录的开头和结尾有4个字节的索引
然后我像这样解码它们:
输出
如您所见,每条记录上都有记录标记
1400 0000
,这意味着记录的长度为20字节(1 fortran)INTEGER@4,2 fortranDOUBLE@8)每端有4个字节的记录标记-我将其读入一个名为_
的变量,并在Python中丢弃。如果您不想这样做,您需要在fortran中使用DIRECT
/STREAM
输出-但我不知道您是否可以在处理链的另一端控制它。有关说明,请参见here关键字:fortran、Python、二进制、无格式、xxd、转储、记录、查看为整数、查看为浮点、查看为浮点64、查看为双精度
相关问题 更多 >
编程相关推荐