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")
この情報で十分ですか?