python pickle模組 json模組

2021-07-23 15:53:53 字數 1606 閱讀 9962

python 在在程式執行過程中,所有的變數都是在記憶體中,記憶體中的變數可以通過命令操作隨意改變,一旦程式結束,變數所占用的記憶體會被系統全部收回,如果沒有把修改的變數儲存到磁碟上,下次執行時,變數又被初始化,我們把在記憶體中可儲存或傳輸的過程叫做序列化pickling,把變數內容從序列化的物件重讀到記憶體中叫反序列化unpickling。

python 實現序列化用 pickle

把物件序列化寫入檔案:

>>>import pickle

>>>d=dic(name="mfk",age=25,score=60)

>>>pickle.dumps(d)

檢視寫入的dumps.txt檔案內容,所顯示的內容是python儲存的物件的內部資訊:

>>>f=open("dumps.txt","wb")

>>>pickle.dumps(d,f)

>>>f.close()

pickle load()實現反序列化:

>>>f=open("dumps.txt","rb")

>>>d=pickle.load(f)

>>>f.close

>>>d

pickle的問題和所有其他程式語言特有的序列化問題一樣,就是它只能用於python,並且可能不同版本的python彼此都不相容,因此,只能用pickle儲存那些不重要的資料,不能成功地反序列化也沒關係。

如果我們要在不同的程式語言之間傳遞物件,就必須把物件序列化為標準格式,比如xml,但更好的方法是序列化為json,因為json表示出來就是乙個字串,可以被所有語言讀取,也可以方便地儲存到磁碟或者通過網路傳輸。json不僅是標準格式,並且比xml更快,而且可以直接在web頁面中讀取,非常方便。

josn和python內建的資料型別

josn型別

python型別

{}dict

list

"string"

str1234.56

int或float

true/false

true/false

null

none

python內建的json模組提供了非常完善的python物件到josn格式的轉換。

python--josn

>>>import json

>>>d=dict(name="mfk",age=25,score=60)

>>>json.dumps(d)

''json--python

>>>json_str=''

>>>json.loads(json_str)

json高階

import  josn

class student(object): 

def __init__(self,name,age,score):

self.name=name

self.age=age

self.score=score

def student2dict(std):

return

s=student(name="mfk",age=25,score=60)

print json.dumps(s,default=student2dict)

輸出結果:

python pickle模組(泡菜)

前提 從檔案中讀取字串容易,但是讀取出數值比較不容易。如果使用read或者readlines方法都會返回乙個字串,可以使用int float等方法從字串中強制轉換為整型或者浮點型數值。若儲存的檔案像列表 字典 集合甚至類的例項這些更加複雜的資料型別時,就會有點難度。可以將這些資料型別轉換為字串再寫入...

python pickle模組的用法

pickle用於python特有的型別,和python的資料型別間進行轉換,提供四個功能 dumps,dump,loads,load.pickle 的用法 pickle.dumps 將資料通過特殊的形式轉換為只有python語言認識的字串 pickle.dump 將資料通過特殊的形式轉換只有pyth...

python Pickle 模組和 Json 模組

pickle pickle 提供了乙個簡單的持久化功能,可以將物件以檔案的形式存放在磁碟上。python 中幾乎所有的資料型別 列表,字典,集合,類等 都可以用 pickle 來序列化。序列化後的資料,可讀性比較差。pickle.dump obj,file protocol 序列化物件,並將資料流寫...