亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

潞西市| 五莲县| 永仁县| 北安市| 靖江市| 长兴县| 东海县| 安图县| 荔波县| 新蔡县| 溧阳市| 阆中市| 承德市| 资溪县| 丹棱县| 深泽县| 延寿县| 珠海市| 安康市| 贵南县| 通道| 读书| 阿巴嘎旗| 涟源市| 资阳市| 陕西省| 华坪县| 毕节市| 桃源县| 仁化县| 宿迁市| 同心县| 茶陵县| 濮阳市| 阿鲁科尔沁旗| 平定县| 永善县| 永城市| 斗六市| 水城县| 加查县|