python3 jason 、pickle 和cpickle

python JSONpython

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易於人閱讀和編寫。JSON的數據格式其實就是python裏面的字典格式,裏面能夠包含方括號括起來的數組,也就是python裏面的列表。編程

在python中,有專門處理jason格式的模塊——jason和picklejson

jason模塊提供了四個方法:dumps、 dump 、loads、load數組

pickle模塊也提供了四個功能:dumps、 dump、loads、load編程語言

1、dumps和dump函數

  dumps和dump序列化方法編碼

  dumps只完成了序列化strspa

  dump必須傳文件描述符,將序列化的str保存在文件中3d

文件操做:對象

 

 

 

2、loads和load

  loads和load反序列化方法

  loads只完成了反序列化。

  load只接受文件描述符,完成讀取文件和反序列化

 

 3、json和pickle模塊

jason模塊和pickle模塊都有dumps、dump、loads、load四種方法,並且用法同樣

不一樣的是json模塊序列化出來是通用格式,其餘編程語言都認識,就是普通字符串

而pickle模塊序列化出來的只有python能夠識別,其餘編程語言不認識,表現爲亂碼

不過pickle能夠序列化函數,可是其餘文件想用該函數,在該文件中須要有該文件的定義(定義和參數必須相同,內容能夠不一樣)

 ×四.json和pickle序列化區別

由此課件json和pickle序列化後數據是由不一樣的,若是進行文件操做json只需對文件進行str數據類型的‘r’、‘w’、‘r+’、‘w+’、‘a’方式打開讀寫,load\dump操做;而pickle則是對文件進行bytes數據類型的‘rb’\'wb'\'ab'等之類的load\dump操做。

五python對象與json對象的對應關係

 

五總結

一、json序列化方法

  dumps:無文件操做  dump:序列化+寫入文件

二、jason反序列化方法:

  loads:無文件操做  load:讀文件+反序列化

三、json模塊序列化的數據更通用

  pickle模塊序列化數據僅python可用,但功能強大,能夠序列化函數。

四、json模塊能夠序列化和反序列化的數據類型見上表

五、格式化寫入文件利用 indent=4

cPckle

Python標準庫提供pickle和cPickle模塊。cPickle是用C編碼的,在運行效率上比pickle要高,可是cPickle模塊中定義的類型不能被繼承(其實大多數時候,咱們不須要從這些類型中繼承,推薦使用cPickle)。cPickle和pickle的序列化/反序列化規則是同樣的,使用pickle序列化一個對象,可使用cPickle來反序列化。同時,這兩個模塊在處理自引用類型時會變得更加「聰明」,它不會無限制的遞歸序列化自引用對象,對於同一對象的屢次引用,它只會序列化一次。

相關文章
相關標籤/搜索