【发布时间】:2011-03-02 12:07:12
【问题描述】:
我正在使用 h5py python 包来读取 HDF5 格式的文件。 (例如 somefile.h5) 我想将数据集的内容写入文本文件。
例如,我想创建一个包含以下内容的文本文件: 1,20,31,75,142,324,78,12,3,90,8,21,1
我可以使用以下代码在 python 中访问数据集:
import h5py
f = h5py.File('/Users/Me/Desktop/thefile.h5', 'r')
group = f['/level1/level2/level3']
dset = group['dsetname']
我的幼稚方法太慢了,因为我的数据集有超过 20000 个条目:
# write all values to file
for index in range(len(dset)):
# do not add comma after last value
if index == len(dset)-1: txtfile.write(repr(dset[index]))
else: txtfile.write(repr(dset[index])+',')
txtfile.close()
return None
有没有更快的方法将其写入文件?也许我可以将数据集转换为 NumPy 数组甚至 Python 列表,然后使用一些文件编写工具?
(我可以在写入文件之前尝试将值连接成一个更大的字符串,但我希望有更优雅的东西)
【问题讨论】:
-
在 Python 中,使用
range(len(dset))几乎总是一个坏主意。总是更喜欢迭代器,特别是因为对于大的dset,range实际上是创建和分配一个len(dset)整数列表。