資料的儲存格式(序列化)

2022-05-04 17:33:13 字數 2757 閱讀 5652

資料序列化是指將結構化資料轉換成允許以共享或儲存的格式,並能恢復成原始結構。 在某些情況下,資料序列化的第二個目的是減少資料大小,從而減小對磁碟和頻寬的要求。

在開始序列化資料之前,確定或決定在資料序列化期間如何結構化資料(扁平或巢狀)是非常重要的。 以下示例中顯示了兩種風格的差異

扁平風格:

巢狀風格:

}

repr

python 中的 repr 方法接收單個物件引數,返回輸入的可列印形式:

#

扁平文字作為輸入

a =

#相同的輸入可以讀取自檔案

a = open('

/tmp/file.py

', 'r'

)#返回輸入的可列印形式

#輸出也能夠寫入檔案

print

(repr(a))

#使用repr將內容寫入檔案

with open('

/tmp/file.py

') as f:f.write(repr(a))

ast.literal_eval

literal_eval 方法安全地解析python資料型別表示式並求值。其支援的資料型別有:字串、數字、元組、列表、字典、布林和none。

with open('

/tmp/file.py

', '

r') as f: inp = ast.literal_eval(f.read())

python 中的 csv 模組實現了讀取和寫入csv形式的**資料的類。

讀取的簡單例子:

#

從檔案中讀取csv資料

import

csvwith open(

'/tmp/file.csv

', newline=''

) as f:

reader =csv.reader(f)

for row in

reader:

print(row)

寫入的簡單例子:

#

將csv資料寫入檔案

import

csvwith open(

'/temp/file.csv

', '

w', newline=''

) as f:

writer =csv.writer(f)

writer.writerows(iterable)

python 中有許多第三方庫用來解析和讀取/寫入 yaml 檔案,例子如下:

#

使用load方法從檔案中讀取 yaml 內容

import

yaml

with open(

'/tmp/file.yaml

', '

r', newline=''

) as f:

try:

print

(yaml.load(f))

except

yaml.yamlerror as ymlexcp:

print(ymlexcp)

python 的 json 模組可以用來讀取和寫入 json 模組。示例如下:

讀取:

#

從檔案中讀取 json 內容

import

json

with open(

'/tmp/file.json

', 'r'

) as f:

data = json.load(f)

寫入:

#

使用 dump 方法將 json 內容寫入檔案

import

json

with open(

'/tmp/file.json

', 'w'

) as f:

json.dump(data, f, sort_keys=true)

python 中 xml 的解析可以使用 xml 庫。

示例:

#

從檔案中讀取 xml 內容

import

xml.etree.elementtree as et

tree = et.parse('

country_data.xml')

root = tree.getroot()

python 的 numpy 陣列可以將資料序列化成位元組形式,或從位元組形式的資料反序列化。

示例:

import

numpy as np

#將 numpy 陣列轉換為位元組形式

byte_output = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]).tobytes()

#將位元組形式轉換回 numpy 陣列

array_format = np.frombuffer(byte_output)

python原生的資料序列化模組稱為 pickle 。

示例:

import

pickle

#示例字典

grades =

#使用 dumps 將物件轉換為序列化字串

serial_grades =pickle.dumps( grades )

#使用 loads 反序列化為物件

received_grades = pickle.loads( serial_grades )

json格式轉化 序列化 反序列化

json header content type text html charset utf 8 arr name 張三 age 18 name 李四 age 20 arr array array name 張三 age 18 array name 李四 age 28 str serialize a...

MessagePack 序列化格式

messagepack 是一種有效的二進位制序列化格式。與json一樣可以在多語言中轉換資料,但對比json,速度更快,轉換後資料更小。安裝2.編譯安裝 usr bin phpize phpize的路徑 configure make make install 3.在php.ini 中加入 exten...

python pickle資料序列化儲存簡單學習

注 windowns,python2.7 理解 可用來儲存想要儲存的資料,存什麼格式的資料,讀的時候就是什麼資料,和open write只讀寫字串不一樣。使用 匯入模組 import cpickle as pickle 因為新版本的python使用c實現了以前的pickle模組,速度會更快,所以我們...