gpt4 book ai didi

python - 从 HDF5 文件中删除信息

转载 作者:太空狗 更新时间:2023-10-29 16:56:39 25 4
gpt4 key购买 nike

我意识到 SO 用户以前曾问过这个 question但它在 2009 年被问到,我希望有更多关于 HDF5 的知识可用或更新版本已经解决了这个特定问题。在这里重申关于我自己的问题的问题;

我有一个来自大型几何体的巨大节点和元素文件,并且已经从中检索了我需要的所有有用信息。因此,在Python中,我试图保留原始文件,但删除我不需要的信息并为其他来源填写更多信息。例如,我有一个不需要的节点数据集。但是,我需要保留相邻的数据集并包含来自外部文件的有关它们的索引的信息。有没有办法删除这些特定的数据集?

或者在 HDF5 文件中使用“占位符”的旧想法是否仍然适用,以至于没有人知道如何/为删除信息而烦恼?我不太担心空白空间,只要简单地删除和添加信息然后创建一个全新的文件会更快。

注意:我正在使用 H5py 的 'r+' 进行读写。

最佳答案

从 hdf5 文件中删除整个节点(组或数据集)应该没有问题。
但是,如果您想回收空间,则必须运行 h5repack 工具。

来自hdf5 docs :

5.5.2. Deleting a Dataset from a File and Reclaiming Space

HDF5 does not at this time provide an easy mechanism to remove a dataset from a file or to reclaim the storage space occupied by a deleted object.

Removing a dataset and reclaiming the space it used can be done with the H5Ldelete function and the h5repack utility program. With the H5Ldelete function, links to a dataset can be removed from the file structure. After all the links have been removed, the dataset becomes inaccessible to any application and is effectively removed from the file. The way to recover the space occupied by an unlinked dataset is to write all of the objects of the file into a new file. Any unlinked object is inaccessible to the application and will not be included in the new file. Writing objects to a new file can be done with a custom program or with the h5repack utility program.

或者,您也可以查看 PyTables 的 ptrepack工具。PyTables 应该能够读取 h5py hdf5 文件,ptrepack 工具类似于 h5repack

如果您想从数据集中删除记录,那么您可能必须检索要保留的记录并创建一个新数据集并删除旧数据集。
PyTables 支持 removing行,但不建议这样做。

关于python - 从 HDF5 文件中删除信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11194927/

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