最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python序列化與數(shù)據(jù)持久化實例詳解

 更新時間:2019年12月20日 11:39:18   作者:隨風行云  
這篇文章主要介紹了python序列化與數(shù)據(jù)持久化,結合實例形式詳細分析了Python序列化與數(shù)據(jù)持久化相關原理、實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下

本文實例講述了python序列化與數(shù)據(jù)持久化。分享給大家供大家參考,具體如下:

數(shù)據(jù)持久化的方式有:

1.普通文件無格式寫入:將數(shù)據(jù)直接寫入到文件中

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

3.DBM方式:shelve,dbm

相關內(nèi)容:

  • json
  • pickle
  • shelve
  • dbm

json:

介紹:

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

用法:

  • 首先要導入模塊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的時候,手動對數(shù)據(jù)進行劃分
print("------json序列化--------")
import json
import time
info={
  'date':time.localtime(),
  'name':'中文'
  # 'func':hello #注:json不可序列化函數(shù)
}
info2=['1',2,3,4]
f=open("test.txt","w")
print("---------dumps,---------")#用'\n'來區(qū)分兩份數(shù)據(jù)
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:

介紹:

  • 用于實現(xiàn)Python數(shù)據(jù)類型與Python特定二進制格式之間的轉(zhuǎn)換
  • 參數(shù)protocol規(guī)定了序列化的協(xié)議版本,默認情況下使用pikkle序列化數(shù)據(jù)是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數(shù)據(jù)類型的數(shù)據(jù)持久化到磁盤,操作類似于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可以很方便的序列化自定義的數(shù)據(jù)類型、函數(shù):

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默認寫入的數(shù)據(jù)是bytes的,將所有字符串都序列化成bytes的

用法:

  • 首先導入模塊imort dbm【注意的是由很多個不同的dbm,可以選擇來使用,這里使用默認】
  • 打開文件:dbm對象=dbm.open(文件名,打開模式)

  • 寫入: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相關內(nèi)容感興趣的讀者可查看本站專題:《Python操作json技巧總結》、《Python編碼操作技巧總結》、《Python數(shù)據(jù)結構與算法教程》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • python實現(xiàn)測試工具(二)——簡單的ui測試工具

    python實現(xiàn)測試工具(二)——簡單的ui測試工具

    這篇文章主要介紹了python如何實現(xiàn)簡單的ui測試工具,幫助大家更好的利用python進行測試工作,感興趣的朋友可以了解下
    2020-10-10
  • Python %r和%s區(qū)別代碼實例解析

    Python %r和%s區(qū)別代碼實例解析

    這篇文章主要介紹了Python %r和%s區(qū)別代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • pandas多層索引的創(chuàng)建和取值以及排序的實現(xiàn)

    pandas多層索引的創(chuàng)建和取值以及排序的實現(xiàn)

    這篇文章主要介紹了pandas多層索引的創(chuàng)建和取值以及排序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • python實現(xiàn)AES加密與解密

    python實現(xiàn)AES加密與解密

    這篇文章主要為大家詳細介紹了python實現(xiàn)AES加密與解密,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Python判斷值是否在list或set中的性能對比分析

    Python判斷值是否在list或set中的性能對比分析

    這篇文章主要介紹了Python判斷值是否在list或set中的性能對比分析,結合實例形式對比分析了使用list與set循環(huán)的執(zhí)行效率,需要的朋友可以參考下
    2016-04-04
  • numpy使用fromstring創(chuàng)建矩陣的實例

    numpy使用fromstring創(chuàng)建矩陣的實例

    今天小編就為大家分享一篇numpy使用fromstring創(chuàng)建矩陣的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 如何查看Django ORM執(zhí)行的SQL語句的實現(xiàn)

    如何查看Django ORM執(zhí)行的SQL語句的實現(xiàn)

    這篇文章主要介紹了如何查看Django ORM執(zhí)行的SQL語句的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • python自動識別文本編碼格式代碼

    python自動識別文本編碼格式代碼

    今天小編就為大家分享一篇python自動識別文本編碼格式代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 詳解Python中的路徑問題

    詳解Python中的路徑問題

    這篇文章主要介紹了Python中的路徑問題,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-09-09
  • python中的反斜杠問題深入講解

    python中的反斜杠問題深入講解

    這篇文章主要給大家介紹了關于python中反斜杠問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08

最新評論

商河县| 扬州市| 卓资县| 台湾省| 潍坊市| 桃源县| 兴文县| 永州市| 柳州市| 龙胜| 松原市| 黑龙江省| 苍南县| 贡山| 陆良县| 安溪县| 尉犁县| 南通市| 旬邑县| 台中县| 定陶县| 泾阳县| 铜川市| 太湖县| 邹城市| 涞水县| 衡水市| 阳泉市| 瓦房店市| 冷水江市| 正安县| 彝良县| 肃北| 唐海县| 那曲县| 武功县| 红安县| 临安市| 砀山县| 兴海县| 安福县|