gpt4 book ai didi

python - 具有版本控制的 HDF5 文件 (h5py) - 每次保存时都会更改哈希值

转载 作者:行者123 更新时间:2023-11-28 17:47:24 30 4
gpt4 key购买 nike

我正在使用 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. 我怎样才能阻止它发生变化,以便版本控制仅在实际数字内容发生变化时才看到文件的新版本?

谢谢

最佳答案

HDF5 文件同时使用抽象数据模型和抽象存储模型。这意味着文件在磁盘上的存储方式可能(通常是)与它在程序中的表示方式完全不同。有可能以不止一种方式存储完全相同的数据,而这对您的程序来说并不明显。

HDF5 file format storage specification允许在数据对象 header 中使用多个时间戳。这些不存储为属性,因此通常不能通过高级 API 访问。可以使用低级 HDF5 API 关闭写入这些时间戳,但不清楚相关功能是否在 h5py 中。 This github issue似乎正是您想要的,但不幸的是它仍然是开放的。

关于python - 具有版本控制的 HDF5 文件 (h5py) - 每次保存时都会更改哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16019656/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com