我有一些由 Fortran77 编写的单精度 little-endian 无格式数据文件。我正在使用 Python 使用以下命令读取这些文件:
import numpy as np
original_data = np.dtype('float32')
f = open(file_name,'rb')
original_data = np.fromfile(f,dtype='float32',count=-1)
f.close()
在 Python 中进行一些数据操作后,我(正在尝试)使用 Python 使用以下命令将它们以原始格式写回:
out_file = open(output_file,"wb")
s = struct.pack('f'*len(manipulated_data), *manipulated_data)
out_file.write(s)
out_file.close()
但这似乎不起作用。任何想法使用 Python 以原始 fortran 未格式化格式写回数据的正确方法是什么?
问题详情:
我能够使用来自 Fortran 的操作数据读取最终文件。但是,我想使用软件(Paraview)可视化这些数据。为此,我将未格式化的数据文件转换为 *h5 格式。我能够使用 h5 实用程序将原始数据和操作数据转换为 h5 格式。但是,虽然 Paraview 能够读取从原始数据创建的 *h5 文件,但 Paraview 无法读取从操纵数据创建的 *h5 文件。我猜有些东西在翻译中丢失了。
这就是我在 Fortran 中打开由 Python 编写的文件的方式(单精度数据):
open (in_file_id,FILE=in_file,form='unformatted',access='direct',recl=4*n*n*n)
这是我正在用 Fortran 编写原始的未格式化数据:
open(out_file_id,FILE=out_file,form="unformatted")
这些信息是否足够?