第三十四節,pickle數據類型轉換二進制字節碼模塊

在使用pickle模塊時須要先 import pickle 引入模塊python

 

pickle.dumps()模塊函數函數

功能:將python各類類型的數據轉換成計算機識別的二進制字節碼【有參】ui

使用方法:pickle.dumps(要轉換的數據類型變量)
spa

格式如:pickle.dumps(a)code

注意:計算機只能字節碼,不能識別python的各類數據類型如:列表,元祖,字典等,要想在計算機保存這些python數據類型,就須要將這些數據類型轉換成二進制字節碼來保存blog

#!/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()模塊函數it

功能:將二進制字節碼還原成它的python數據類型【有參】io

使用方法:pickle.loads(須要還原的二進制字節碼變量)
class

格式如:pickle.loads(b)
import

#!/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數據類型
#輸出
# ['你好', '我好', '他好']
相關文章
相關標籤/搜索