數據持久化的方式有:json
1.普通文件無格式寫入:將數據直接寫入到文件中函數
2.普通序列化寫入:json,pickle編碼
3.DBM方式:shelve,dbmspa
首發時間:2018-02-23 20:52code
按照指定格式【好比格式是字典,那麼文件中就是字典】將數據明文寫入到文件中,類型是bytes的,好比」中文「就會變成Unicode編碼對象
print("------json序列化--------") import json import time info={ 'date':time.localtime(), 'name':'中文' } f=open("test.txt","w") print("---------dump---------") # json.dump(info,f) # f.close() print("---------dumps,---------") f.write(json.dumps(info)) f.close()
print("------反序列化--------") import json f=open("test.txt","r") print("-------load----------") # data=json.load(f)#1 # print(data) print("-------loads----------") d2=json.loads(f.read()) print(d2) f.close()
print("------json序列化--------") import json import time info={ 'date':time.localtime(), 'name':'中文' # 'func':hello #注:json不可序列化函數 } info2=['1',2,3,4] f=open("test.txt","w") print("---------dumps,---------")#用'\n'來區分兩份數據 f.write(json.dumps(info)+"\n") f.write(json.dumps(info2)+"\n") f.close()
import json with open("test.txt") as f: a=json.loads(f.readline()) b=json.loads(f.readline()) print(a,b)
import pickle info={ 'name':'1', 'age':2, } f=open("test2.txt","wb") pickle.dump(info,f)#序列化方法1 # f.write(pickle.dumps(info))#序列化方法2 f.close()
print("------反序列化--------") import pickle f=open("test2.txt","rb") data=pickle.loads(f.read())#反序列方法1 print(data) # data=pickle.load(f)#反序列方法2 # print(data) f.close()
import shelve,time d = shelve.open('shelve_test') # 打開一個文件 print("----------寫----------") info ={"name":'lilei',"sex":"man"} name = ["autuman", "zhangsan", "lisi"] d["teacher"] = name d["student"] = info d["date"] = time.ctime() print("--------讀------------") print(d.get("teacher")) print(d.get("student")) print(d.get("date")) d.close()
shelve能夠很方便的序列化自定義的數據類型、函數:blog
import shelve,time class A: def hello(self): print("123") d = shelve.open('shelve_test') # 打開一個文件 print("----------寫----------") d['class'] =A print("--------讀------------") a=d.get('class')() a.hello() d.close()
import dbm db=dbm.open("test.txt","c") print("寫".center(50,'-')) db["name"]="1111111111112" db["name2"]="2222222222222" print("讀".center(50,'-')) print(db["name"]) print(db["name2"]) db.close()