python基础2-pickle序列化
pickle序列化 import pickle def sayhi(name): print("hello,",name) data = {'name':'luoliyu', 'age':25, 'func':sayhi } f = open("test.txt","wb") print(type(pickle.dumps(data))) #pickle.dumps()默认变成了二进制 print(pickle.dumps(data)) f.write(pickle.dumps(data)) #等同于pickle.dump(data,f) f.close() #result <class 'bytes'> b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x07\x00\x00\x00luoliyuq\x02X\x03\x00\x00\x00ageq\x03K\x19X\x04\x00\x00\x00funcq\x04c__main__\nsayhi\nq\x05u.' pickle反序列化 import pickle f = open('test.txt','rb') info = pickle.loads(f.read()) #等同于info = pickle.load(f) print(type(info)) print(info['name']) #result Traceback (most recent call last): File "C:/Users/Administrator/PycharmProjects/study_self/built-in function/json_fanxuliehua.py", line 4, in <module> info = pickle.loads(f.read()) AttributeError: Can't get attribute 'sayhi' on <module '__main__' from 'C:/Users/Administrator/PycharmProjects/study_self/built-in function/json_fanxuliehua.py'> #虽然存下了内存地址,但是上次程序结束,内存就释放啦,所以存内存地址不可行 #想要序列化,需要定义一个函数名相同的函数 def sayhi(name): print("hello,",name)
#总结:pickle只有在python中能用

浙公网安备 33010602011771号