7

h5py を使用して、数値作業の中間データを HDF5 ファイルに保存しています。プロジェクトをバージョン管理していますが、HDF5 ファイルを生成するスクリプトを再実行するたびに、内部のデータが変更されなくてもバイナリ ファイルが変更されるため、これは HDF5 ファイルではうまく機能しません。

これを説明するための小さな例を次に示します。

In [1]: import h5py, numpy as np

In [2]: A = np.arange(5)

In [3]: f = h5py.File('test.h5', 'w'); f['A'] = A; f.close()

In [4]: !md5sum test.h5
7d27c258d94ed5d06736f6d2ba7c9433  test.h5

In [5]: f = h5py.File('test.h5', 'w'); f['A'] = A; f.close()

In [6]: !md5sum test.h5
c1db5806f1393f2095c88dbb7efeb7d3  test.h5

In [7]: # the file has changed but still contains the same data!

HDF5 ファイル形式のドキュメントと h5py のドキュメントを調べましたが、これに役立つものは見つかりませんでした。私の質問は次のとおりです。

  1. 同じデータを保存しているのに、ファイルが変更されるのはなぜですか?

  2. 実際の数値コンテンツが変更されたときにのみバージョン管理がファイルの新しいバージョンを認識できるように、変更を停止するにはどうすればよいですか?

ありがとう

4

1 に答える 1