廖雪峰python3複習總結——day9-3
阿新 • • 發佈:2018-12-11
Python的os
模組封裝了作業系統的目錄和檔案操作,要注意這些函式有的在os
模組中,有的在os.path
模組中。
序列化:把變數從記憶體中變成可儲存或傳輸的過程稱之為序列化,在Python中叫pickling;
反序列化:把變數內容從序列化的物件重新讀到記憶體裡稱之為反序列化,即unpickling。
Python提供了pickle
模組來實現序列化。
>>> import pickle >>> d = dict(name='Bob', age=20, score=88) >>> pickle.dumps(d) b'\x80\x03}q\x00(X\x03\x00\x00\x00ageq\x01K\x14X\x05\x00\x00\x00scoreq\x02KXX\x04\x00\x00\x00nameq\x03X\x03\x00\x00\x00Bobq\x04u.' >>> f = open('dump.txt', 'wb') >>> pickle.dump(d, f) >>> f.close() 反序列化: >>> f = open('dump.txt', 'rb') >>> d = pickle.load(f) >>> f.close() >>> d {'age': 20, 'score': 88, 'name': 'Bob'}
JSON:如果我們要在不同的程式語言之間傳遞物件,就必須把物件序列化為標準格式。 JSON是一種標準格式
JSON表示的物件就是標準的JavaScript語言的物件。JSON標準規定JSON編碼是UTF-8
>>> import json >>> d = dict(name='Bob', age=20, score=88) >>> json.dumps(d) '{"age": 20, "score": 88, "name": "Bob"}' >>> json_str = '{"age": 20, "score": 88, "name": "Bob"}' >>> json.loads(json_str) {'age': 20, 'score': 88, 'name': 'Bob'}
類的序列化與反序列化:
import json class Student(object): def __init__(self, name, age, score): self.name = name self.age = age self.score = score def student2dict(std): return { 'name': std.name, 'age': std.age, 'score': std.score } >>> print(json.dumps(s, default=student2dict)) {"age": 20, "name": "Bob", "score": 88} 針對所有類: print(json.dumps(s, default=lambda obj: obj.__dict__)) 反序列化: def dict2student(d): return Student(d['name'], d['age'], d['score'])