h5py.File
是 Python 中 h5py 库提供的一个函数,用于读取和写入 HDF5(Hierarchical Data Format version 5) 格式的文件。HDF5 是一种强大的数据格式,可以高效存储和管理复杂结构和大规模数据。
用法
h5py.File
用于打开一个 HDF5 文件以进行读取、写入或创建操作。该函数返回一个对象,可以用来访问文件中的数据集(datasets)和组(groups),从而操作分层结构的数据。
语法
h5py.File(name, mode='r', driver=None, libver=None, userblock_size=None, swmr=False)
参数说明
-
name
:
HDF5 文件的名称(路径)。可以是字符串形式的文件路径,也可以是一个类文件对象。 -
mode
:
文件打开模式,常用值如下:'r'
:只读模式(默认)。文件必须存在。'r+'
:读写模式。文件必须存在。'w'
:创建新文件。如果文件已存在,则会被覆盖。'w-'
或'x'
:创建新文件。如果文件已存在,则会报错。'a'
:读写模式。如果文件不存在,则会创建一个新文件。
-
driver
:
指定 HDF5 驱动程序。通常保持为None
,除非需要高级自定义。 -
libver
:
指定 HDF5 库的版本范围,常见值为None
或类似('earliest', 'latest')
的元组。 -
userblock_size
:
如果指定,则设置文件开头用户块的大小(单位:字节)。大小必须是 2 的幂,且至少为 512。 -
swmr
:
布尔值,用于开启单写多读模式(SWMR,Single-Writer, Multiple-Reader)。适用于某些并发访问的场景。
示例
创建和写入数据
import h5py
# 创建一个新的 HDF5 文件
with h5py.File('example.h5', 'w') as f:
# 创建数据集
data = f.create_dataset('dataset_name', (100,), dtype='i') # 创建一个大小为100的整数数据集
data[:] = range(100) # 写入数据
读取数据
import h5py
# 打开一个已有的 HDF5 文件
with h5py.File('example.h5', 'r') as f:
# 访问数据集
data = f['dataset_name']
print(data[:]) # 读取数据
创建组和子数据集
import h5py
with h5py.File('example.h5', 'a') as f:
# 创建一个组
group = f.create_group('group_name')
# 在组中创建一个子数据集
group.create_dataset('sub_dataset', (50,), dtype='f') # 浮点类型数据
h5py.File
的关键功能
-
分层结构:
支持类似文件系统的分层数据结构,数据可以按组(group)和数据集(dataset)组织。 -
高效 I/O:
支持对大型数据集的高效流式读写,无需将整个数据集加载到内存中。 -
支持元数据:
可以通过属性(attributes)存储关于组或数据集的元数据,便于数据组织和管理。
使用技巧
- 文件管理:建议使用
with
语句管理文件资源,确保文件操作完成后自动关闭。 - 存储元数据:使用属性存储数据集或组的附加信息,便于后续查询和使用。
- 大数据处理:适合处理大规模数据,避免内存溢出。
在生物中很多数据都是h5格式的,因此python中的h5py库是必须用的。