Linux下用R读取HDF5文件时如何保留原始时间戳?
解决HDF5文件读取时修改时间戳的问题
问题出在rhdf5::H5Fopen()的默认打开模式——它默认使用**读写模式(H5F_ACC_RDWR)**打开文件,哪怕你只是读取数据,这种模式下文件系统或HDF5库也会更新文件的最后修改时间戳。
要保留原始时间戳,只需要显式指定只读模式打开文件:
修改你的函数,在H5Fopen()中添加flags = rhdf5::H5F_ACC_RDONLY参数:
function(path_to_file){ data <- rhdf5::H5Fopen(path_to_file, native = TRUE, flags = rhdf5::H5F_ACC_RDONLY # 显式指定只读模式 ) data <- as.data.frame(data[["slot1"]]) # 显式关闭HDF5文件句柄,避免资源泄漏 rhdf5::H5Fclose(data@ID) return(data) }
补充说明:
- 只读模式下,HDF5库不会对文件做任何写入操作,自然不会修改时间戳,完美契合流水线可复现性的要求。
- 额外建议:读取完成后调用
H5Fclose()关闭文件句柄,防止长时间占用系统资源,尤其是批量处理文件时更重要。
内容的提问来源于stack exchange,提问作者Giulio Centorame
相关产品推荐
相关产品推荐

