在Python程序中,有时候会需要对一些数据进行保存,而Python的pickle模块就是专门用来对数据进行序列化的。需要说明的是Python还有一个cPickle模块,其与pickle具有相同的功能,但因为其是C语言进行实现的,效率上相比pickle要好很多,所以可以使用cPickle完全替代pickle。 下面简单记录几个例子,以便备忘,可以在用到时直接查询、模仿使用。
1.使用cPickle替代pickle
[python]import cPickle as pickle import random[/python] 使用如上的import即可将cPickle替换为pickle。
2.保存一个数据
[python]seed_num = 2000 shuffle_seed = random.sample(range(seed_num), seed_num) with open(‘shuffle_seed.pkl’, ‘wb’) as fss: pickle.dump(shuffle_seed, fss, protocol=pickle.HIGHEST_PROTOCOL)[/python] 如上程序片段,将一个列表shuffle_seed进行保存。而dump的参数中,[python]protocol=pickle.HIGHEST_PROTOCOL[/python]可以始终使用,因为这个参数可以将压缩比提高到最大,而且我测试,保存速度也是最快的。
3.保存多个数据
保存多个数据时,可以将多个数据构造成字典,然后保存该字典,如下: [python]seed_num = 2000 seed_num_sample = 10 shuffle_seed = random.sample(range(seed_num), seed_num) shuffle_seed_sample = random.sample(range(seed_num_sample), seed_num_sample) sss_dict = {‘shuffle_seed’: shuffle_seed, ‘shuffle_seed_sample’: shuffle_seed_sample} with open(‘shuffle_seed.pkl’, ‘wb’) as fss: pickle.dump(sss_dict, fss, protocol=pickle.HIGHEST_PROTOCOL)[/python]
4.载入一个数据
直接使用如下程序: [python]with open(‘shuffle_seed.pkl’, ‘rb’) as f: ss = pickle.load(f)[/python]
5.载入多个数据
将载入的数据作为字典进行处理,即可得到各个数据: [python]with open(‘shuffle_seed.pkl’, ‘rb’) as f: ss = pickle.load(f) shuffle_seed = ss[‘shuffle_seed’] shuffle_seed_sample = ss[‘shuffle_seed_sample’][/python]