使用ptrepack回收hdf5文件中删除的节点

Using ptrepack to reclaim deleted nodes in hdf5 file

我使用 pandas 中的 Pytables 集成将一堆 pandas 数据帧写入 h5 文件。从那时起,我删除了 h5 文件中的一些组,我想重新打包它以回收 space。根据我的发现,我知道我需要使用 Pytables ptrepack 工具。但是我无法让它工作。如果我在脚本中搞砸了,或者我实际上 运行 遇到了 pytables 中的错误,有人可以告诉我吗?如果我搞砸了,你能给我一个导入和调用 ptrepack 以简单地重新打包 h5 文件以保存 space 的示例吗?

这是我的脚本和我得到的错误:

当我查看 anaconda 中 pytables 文件夹中的 ptrepack.py 脚本时,我还看到我应该能够向它传递一个帮助标志。但这也不起作用。这是我尝试让帮助标志工作时遇到的错误

目前我正在 windows 10 机器上工作 具有以下软件包版本:
python3.5.1
pytables: 3.2.2
pandas: 0.18.0

谢谢!

好的,首先,要在命令提示符中显示帮助对话框,您必须执行 ptrepack -hptrepack --help 我没能使脚本在 python 中运行,因为它似乎是专门为命令行制作的——但是我确实发现了这个关于这个主题非常有用的笔记本([回收 HDF5 Space] [1]) 具有以下解决方案

from subprocess import call
outfilename = 'out.h5'
command = ["ptrepack", "-o", "--chunkshape=auto", "--propindexes", filename, outfilename]
call(command)

请注意,这实际上只是启动了一个调用 repack 函数的子进程。 [1]: https://github.com/jackdotwa/python-concepts/blob/master/hdf5/reclaiming_space.ipynb“回收 HDF5 space”