91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中序列化與數據持久化的示例分析

發布時間:2021-07-16 14:06:47 來源:億速云 閱讀:157 作者:小新 欄目:開發技術

這篇文章主要介紹python中序列化與數據持久化的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

具體如下:

數據持久化的方式有:

1.普通文件無格式寫入:將數據直接寫入到文件中

2.普通序列化寫入:json,pickle

3.DBM方式:shelve,dbm

相關內容:

  • json

  • pickle

  • shelve

  • dbm

json:

介紹:

按照指定格式【比如格式是字典,那么文件中就是字典】將數據明文寫入到文件中,類型是bytes的,比如”中文“就會變成Unicode編碼

python中序列化與數據持久化的示例分析

用法:

  • 首先要導入模塊import json

  • 序列化:

    • json.dump(序列化對象,文件對象)

    • json.dumps(序列化對象),返回值是一個字符串,需要手動將這個字符串寫入到文件中

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()
  • 反序列化:

    • json.load(文件對象)

    • json.loads(字符串)

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()

對于多次dump\dumps,如何load\loads取出來:

  • 需要在dump的時候,手動對數據進行劃分

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)

pickle:

介紹:

  • 用于實現Python數據類型與Python特定二進制格式之間的轉換

  • 參數protocol規定了序列化的協議版本,默認情況下使用pikkle序列化數據是bytes的,打開文件的方式必須為二進制格式

用法:

  • 首先導入模塊import pickle

  • 序列化:

    • pickle.dump(序列化對象,文件對象)

    • pickle.dumps(序列化對象),返回值是一個字符串,需要手動將這個字符串寫入到文件中

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()
  • 反序列化:

    • pickle.load(文件對象)

    • pickle.loads(字符串)

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()

shelve:

介紹:

  • 專門用于將Python數據類型的數據持久化到磁盤,操作類似于dict

用法:

  • 首先導入模塊import

  • shelve打開一個文件: shelve文件對象 = shelve.open(文件名)

  • 寫入:shelve文件對象[key]=value

  • 讀出:shelve文件對象.get(key)

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可以很方便的序列化自定義的數據類型、函數:

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()

dbm:

介紹:

  • dbm與shelve非常類似,但dbm的鍵和值必須是字符串類型

  • dbm默認寫入的數據是bytes的,將所有字符串都序列化成bytes的

用法:

  • 首先導入模塊imort dbm【注意的是由很多個不同的dbm,可以選擇來使用,這里使用默認】

  • 打開文件:dbm對象=dbm.open(文件名,打開模式)

python中序列化與數據持久化的示例分析

  • 寫入:dbm對象[key]=value

  • 讀取: dbm對象[key]

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()

以上是“python中序列化與數據持久化的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

三明市| 永靖县| 阿坝县| 交城县| 县级市| 读书| 彩票| 施秉县| 潮安县| 通榆县| 阿坝| 安化县| 磐安县| 紫金县| 龙井市| 务川| 广宗县| 兴国县| 井研县| 宽城| 扬州市| 闽侯县| 册亨县| 凤庆县| 筠连县| 桑植县| 宝丰县| 衡南县| 梁平县| 肥城市| 金坛市| 屏边| 峡江县| 武清区| 新丰县| 苏尼特右旗| 黄梅县| 隆尧县| 嘉祥县| 家居| 安达市|