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 序列化物件,並將資料流寫...