標籤:其他 get 並且 因此 pyc from strong port 網路傳輸
情景
例1dic = str({‘age‘:‘18‘})f = open(‘text‘,‘w‘)f.write(dic)f.close()例2f = open(‘text‘,‘r‘)data = f.read()print(eval(data)[‘age‘])
當我們將記憶體資料Object Storage Service到檔案中,是無法直接將字典Object Storage Service,必須轉化為字串格式str(),當我們通過f.read()方法讀取檔案中儲存的字典格式對象時,讀取的也是字串個是,必須用eval()方法轉化,這種方法很Lou。
用於序列化的兩個模組
- json,用於字串 和 python資料類型間進行轉換
- pickle,用於python特有的類型 和 python的資料類型間進行轉換
Json模組提供了四個功能:dumps、dump、loads、load
pickle模組提供了四個功能:dumps、dump、loads、load
json模組
再上面的情形中,更好的方法是通過Json模組,因為JSON表示出來就是一個字串,可以被所有語言讀取,也可以方便地儲存到磁碟或者通過網路傳輸。JSON不僅是標準格式,並且比XML更快,而且可以直接在Web頁面中讀取,非常方便。
import jsondic = {‘age‘:‘28‘}#寫入檔案data = json.dumps(dic)f = open(‘text‘,‘w‘)f.write(data)f.close()#讀取檔案f = open(‘text‘,‘r‘)data = f.read()content = json.loads(data)print(content[‘age‘])
pickle模組
Pickle的問題和所有其他程式設計語言特有的序列化問題一樣,就是它只能用於Python,並且可能不同版本的Python彼此都不相容,因此,只能用Pickle儲存那些不重要的資料,不能成功地還原序列化也沒關係。
import pickledef foo(): print(‘ok‘)#寫入檔案data = pickle.dumps(foo)f = open(‘text‘,‘wb‘)f.write(data)f.close()#讀取檔案f = open(‘text‘,‘rb‘)data = f.read()content = pickle.loads(data)content()#Can‘t get attribute ‘foo‘ on <module ‘__main__‘ from ‘C:/Users/LG/PycharmProjects/mystuff/March/day23/json_module.py‘>
- 注意:寫入模式必須為wb、rb
- 讀取檔案是報錯是由於找不到函數記憶體位址,所以如果想要讀取時,函數必須在記憶體位址。
dump & load 方法
1. dump
import jsondic = {‘age‘:‘28‘}f = open(‘text‘,‘w‘)json.dump(dic,f)f.close()
2. load
import jsonf = open(‘text‘,‘r‘)data = json.load(f)print(data[‘age‘])f.close()
Python基礎文法 - json & pickle