第三十四节,pickle数据类型转换二进制字节码模块
在使用pickle模块时需要先 import pickle 引入模块
pickle.dumps()模块函数
功能:将python各种类型的数据转换成计算机识别的二进制字节码【有参】
使用方法:pickle.dumps(要转换的数据类型变量)
格式如:pickle.dumps(a)
注意:计算机只能字节码,不能识别python的各种数据类型如:列表,元祖,字典等,要想在计算机保存这些python数据类型,就需要将这些数据类型转换成二进制字节码来保存
#!/usr/bin/env python # -*- coding:utf8 -*- import pickle yhxxi = { #创建一个嵌套字典 1:{ "yonghu":"liguixiou", "mima":"12345", "youjian":"729088188@qq.com", "zichan":700, }, 2:{ "yonghu":"liguixiou2", "mima":"123452", "youjian":"7290881882@qq.com", "zichan":7002, } } a = pickle.dumps(yhxxi) #将字典转换成二进制字节码 print(a) #打印出二进制字节码 #输出 # b'\x80\x03}q\x00(K\x01}q\x01(X\x04\x00\x00\x00mimaq\x02X\x05\x00\x00\x0012345q\x03X\x07\x00\x00\x00youjianq\x04X\x10\x00\x00\x00729088188@qq.comq\x05X\x06\x00\x00\x00zichanq\x06M\xbc\x02X\x06\x00\x00\x00yonghuq\x07X\t\x00\x00\x00liguixiouq\x08uK\x02}q\t(h\x02X\x06\x00\x00\x00123452q\nh\x04X\x11\x00\x00\x007290881882@qq.comq\x0bh\x06MZ\x1bh\x07X\n\x00\x00\x00liguixiou2q\x0cuu.'
pickle.loads()模块函数
功能:将二进制字节码还原成它的python数据类型【有参】
使用方法:pickle.loads(需要还原的二进制字节码变量)
格式如:pickle.loads(b)
#!/usr/bin/env python # -*- coding:gbk -*- import pickle a = ["你好", "我好", "他好"] #创建一个列表 b = pickle.dumps(a) #将列表转换成二进制字节码 print(b) #打印出转换的二进制字节码 c = pickle.loads(b) #将二进制字节码还原它的数据类型 print(c) #打印出还原的数据类型 #输出 # b'\x80\x03]q\x00(X\x06\x00\x00\x00\xe4\xbd\xa0\xe5\xa5\xbdq\x01X\x06\x00\x00\x00\xe6\x88\x91\xe5\xa5\xbdq\x02X\x06\x00\x00\x00\xe4\xbb\x96\xe5\xa5\xbdq\x03e.' # ['你好', '我好', '他好']
将一个字典转换成二进制字节码,写入本地文件,在从本地文件读出二进制字节码,还原成字典,修改字典里的某些值后,将字典转换成二进制字节码,在重新写入本地文件
#!/usr/bin/env python # -*- coding:utf8 -*- import pickle """在一个本地文件里以二进制字节码方式保存会员信息""" yhxxi = { #创建一个嵌套字典 1:{ "yonghu":"liguixiou", "mima":"12345", "youjian":"729088188@qq.com", "zichan":700, }, 2:{ "yonghu":"liguixiou2", "mima":"123452", "youjian":"7290881882@qq.com", "zichan":7002, } } f = open("yh.txt", "wb") #打开yh.txt文件写入模式b以字节类型打开 f.write(pickle.dumps(yhxxi)) #将yhxxi字典通过pickle.dumps()模块函数转换成二进制字节码,写入yh.txt文件中 print(pickle.dumps(yhxxi)) #打印出字典转换成的二进制字节码 f.close() #关闭打开的文件 """在一个本地文件里读取里面的二进制字节码,还原它的数据类型""" f2 = open("yh.txt", "rb") #打开yh.txt文件读模式b以字节类型打开 fa = f2.read() #读出文件里的内容 fa2 = pickle.loads(fa) #将文件里读出的二进制字节码还原它的数据类型 f2.close() #关闭打开的文件 print(fa2) #打印出还原的数据类型 """将还原的数据类型,修改后,转换成二进制字节码再写入文件保存""" fa2[2]["zichan"] = fa2[2]["zichan"] - 500 #将字典里的字典,键为2里的键为zichan的值减500 fa2[2]["yonghu"] = "liguixiou3" #将字典里的字典,键为2里的键为yonghu的值改为liguixiou3 print(fa2) #此时的fa2字典里的数据已经修改 f2 = open("yh.txt", "wb") #打开yh.txt文件写入模式b以字节类型打开 xieru2 = pickle.dumps(fa2) #将修改后的字典转换成二进制字节码 f2.write(pickle.dumps(fa2)) #将修改后的字典转换成二进制字节码,然后再写入yh.txt文件 f2.close() ##关闭打开的文件 print(xieru2) #打印将修改后的字典 #最后输出 # b'\x80\x03}q\x00(K\x01}q\x01(X\x07\x00\x00\x00youjianq\x02X\x10\x00\x00\x00729088188@qq.comq\x03X\x06\x00\x00\x00yonghuq\x04X\t\x00\x00\x00liguixiouq\x05X\x06\x00\x00\x00zichanq\x06M\xbc\x02X\x04\x00\x00\x00mimaq\x07X\x05\x00\x00\x0012345q\x08uK\x02}q\t(h\x02X\x11\x00\x00\x007290881882@qq.comq\nh\x04X\n\x00\x00\x00liguixiou2q\x0bh\x06MZ\x1bh\x07X\x06\x00\x00\x00123452q\x0cuu.' # {1: {'youjian': '729088188@qq.com', 'yonghu': 'liguixiou', 'zichan': 700, 'mima': '12345'}, 2: {'youjian': '7290881882@qq.com', 'yonghu': 'liguixiou2', 'zichan': 7002, 'mima': '123452'}} # {1: {'youjian': '729088188@qq.com', 'yonghu': 'liguixiou', 'zichan': 700, 'mima': '12345'}, 2: {'youjian': '7290881882@qq.com', 'yonghu': 'liguixiou3', 'zichan': 6502, 'mima': '123452'}} # b'\x80\x03}q\x00(K\x01}q\x01(X\x07\x00\x00\x00youjianq\x02X\x10\x00\x00\x00729088188@qq.comq\x03X\x06\x00\x00\x00yonghuq\x04X\t\x00\x00\x00liguixiouq\x05X\x06\x00\x00\x00zichanq\x06M\xbc\x02X\x04\x00\x00\x00mimaq\x07X\x05\x00\x00\x0012345q\x08uK\x02}q\t(h\x02X\x11\x00\x00\x007290881882@qq.comq\nh\x04X\n\x00\x00\x00liguixiou3q\x0bh\x06Mf\x19h\x07X\x06\x00\x00\x00123452q\x0cuu.'
pickle.dump()
功能:将python数据类型以二进制字节码方式直接写入文件,【有参】
使用方法:pickle.dump(要写入文件的类型数据变量, 打开文件变量)【有参】
格式如:pickle.dump(a,c)
注意:pickle.dump()写入文件可以直接写入,不需要write()函数即可写入
#!/usr/bin/env python # -*- coding:utf8 -*- import pickle a = ["你好", "我好", "他好"] #创建一个列表 c = open("yh.txt", "wb") #写入模式打开一个文件以二进制字节码模式 pickle.dump(a,c) #将python数据类型以二进制字节码方式直接写入文件 c.close() #关闭文件
pickle.load()
功能:将文件里的二进制字节码直接读出还原它的python数据类型【有参】
使用方法:pickle.load(打开文件的变量)
格式如:pickle.load(c1)
注意:pickle.load()读出文件可以直接读出,不需要read()函数即可读出
#!/usr/bin/env python # -*- coding:utf8 -*- import pickle c1 = open("yh.txt", "rb") #以读二进制模式打开文件 fa = pickle.load(c1) #将文件里的二进制字节码直接读出还原它的python数据类型 c1.close() #关闭文件 print(fa) #打印出还原的Python数据类型 #输出 # ['你好', '我好', '他好']