Python HDF5 'a'模式的C++等效实现及文件读写问题
Python h5py "a"模式的C++ HDF5等效实现
Python中h5py的"a"模式行为是:文件存在时以读写方式打开并保留原有内容;文件不存在时创建新文件。对应的C++ HDF5等效模式是**H5F_ACC_RDWR | H5F_ACC_CREAT**,这个组合刚好匹配需求,可替代会截断文件的H5F_ACC_TRUNC。
以下是完整的C++实现代码:
#include <H5Cpp.h> #include <iostream> int main() { const std::string file_name = "f_1.h5"; H5::H5File file; try { // 以读写+创建模式打开文件,匹配Python的"a"模式 file = H5::H5File(file_name, H5F_ACC_RDWR | H5F_ACC_CREAT); // 这里可添加读写数据集的逻辑,比如创建新数据集或读取已有数据集 // ... file.close(); } catch (const H5::Exception& e) { std::cerr << "HDF5操作错误: " << e.getDetailMsg() << std::endl; return 1; } return 0; }
关键说明:
H5F_ACC_RDWR:以读写权限打开已存在的文件H5F_ACC_CREAT:如果文件不存在则创建新文件- 两者通过位或(
|)组合,实现和Pythonh5py.File("file.h5", "a")完全一致的行为 - 避免使用
H5F_ACC_TRUNC,它会强制截断已有文件并清空所有原有内容
内容的提问来源于stack exchange,提问作者L1L2L3
相关产品推荐
相关产品推荐

