Python提供了一个标准库,名为pickle,它可以保存和加载几乎任何Python数据对象,包括列表。
使用pickle很简单:只需要导入所需的模块,然后使用dump()保存数据,以后某个时间使用load()恢复数据。处理数据时的唯一要求是,必须以二进制访问模式打开这些文件。
>>> import pickle
>>> with open('mydata.pickle','wb')as mysavedata:
pickle.dump([1,2,'Three'],mysavedata)
>>> with open('mydata.pickle','rb')as myrestoredata:
a_list=pickle.load(myrestoredata)
>>> print(a_list)
[1, 2, 'Three']
“腌制”后的数据:mydata.pickle
“b”告诉Python以二进制模式打开数据文件。
腌制或者解除数据腌制时如果出了问题,pickle模块会产生一个PickleError
腌制:
try:
with open('man_data.txt','wb') as man_file,open('woman_data.txt','wb')as woman_file:
pickle.dump(man,man_file)
pickle.dump(woman,woman_file)
except IOError as err:
print('File error:'+str(err))
except pickle.PickleError as perr:
print('Pickling error:'+str(perr))
读取(解除):
try:
with open('man_data.txt','rb') as man_file,open('woman_data.txt','rb')as woman_file:
new_man = pickle.load(man_file)
new_woman = pickle.load(woman_file)
except IOError as err:
print('File error:'+str(err))
except pickle.PickleError as perr:
print('Pickling error:'+str(perr))
展示:
>>> nester.print_lol(new_man)
Hi.
How are you?
I'm file,too.
Thanks.
>>> nester.print_lol(new_woman)
Hi.
I'm fine,thank you.And you?
Okay.hi: