在写python代码的时候,常常需要将python的对象序列化为字节流,或者保存到文件、存到数据库,或者通过网络传输。
一种常见的方法就是用pickle,这是python自有的数据编码方式,可以将待序列化的对象的所有数据信息都序列化为字节流,并且可以完美反序列化,当然前提是所有所需的源文件都是可用且相同的。pickle反序列化会自动加载模块并创建实例,所以一旦代码环境改变,就会导致pickle保存下来对数据不可用了。所以不适合用来长时间存储。
另外,对于array和numpy.array而言,pickle实在是太蠢了。有人会用cpickle+gzip的方式对数组进行高效存储和压缩,但了解了HDF5编码的存储,你不会再想要用pickle(s)保存数组了。
import h5py
def load_hdf5(infile, keys):
"""
Load hdf5 file to dict with arrays.
Args:
infile: str, name of hdf5 file
keys: tuple/list, keys in hdf5 dataset
Return:
dic