编程语言
首页 > 编程语言> > 使用Python编写Fortran无格式文件

使用Python编写Fortran无格式文件

作者:互联网

我有一些由Fortran77编写的单精度小尾数未格式化数据文件.我正在使用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文件.我猜翻译中有些东西正在丢失.

这就是我打开用Python在Fortran中编写的文件的方式(单精度数据):

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")

这些信息足够吗?

解决方法:

您是否尝试过使用受控数据数组的.tofile方法?它将以C顺序写入数组,但能够写入纯二进制.

.tofile的文档也建议与以下内容相同:

with open(outfile, 'wb') as fout:
    fout.write(manipulated_data.tostring())

标签:dataformat,hdf5,fortran,paraview,python
来源: https://codeday.me/bug/20191031/1974205.html