模組 序列化模組 json pickle

2022-04-25 08:01:04 字數 1918 閱讀 4734

模組的形象:

內建模組:安裝python直譯器的時候一起安裝上的

第三方模組(擴充套件模組):需要自己安裝

自定義模組:自己寫的py檔案

序列的物件:列表,元組,字串,bytes

序列化的定義:把乙個資料型別轉換成字串,bytes型別的過程

為什麼要把資料型別序列化

當你需要把乙個資料型別儲存在檔案中的時候

當你需要把乙個資料型別通過網路傳輸的時候

使用eval() 有風險,所以一般情況下不能使用

應用場景:

在網路操作中,以及多語言環境中,要傳遞字典,數字,字串,列表等簡單的資料型別的時候使用。

優點:對於所有語言都通用

缺點:只支援數字,字串,列表,字典(key值必須是可hash的,即不可變的資料型別)的資料型別

import

json

stu =

ret = json.dumps(stu,ensure_ascii=false) #

序列化的過程

#ensure_ascii=false 希望序列化的中文能以中文的形式被現實並且寫到檔案中
print(ret,type(ret)) #

print(stu,type(stu)) #

l1 = json.loads(ret) #

反序列過程

print(l1,type(l1)) #

import json

方法 dumps() 序列化   loads()反序列化 

dumps()   dic--->str   序列化方法

loads(str)    str----> dic/list   反序列化方法

dump(dic/lis,f)    dic/list------->檔案,序列化方法

load(f)    檔案中-----》dic/list    反序列化方法。可以進行多次dump進入檔案中的資料,但是load會報錯

引數:ensure_ascii=false 希望序列化的中文能以中文的形式被顯示並且寫入檔案中

與json方法相同,只是轉化型別不同

dump與load  操作檔案的時候必須以+b開啟

在load的時間,如果這個要被load的內容不再記憶體中,程式會報錯的

pickle支援多次dump和多次load   (load的時候需要進行異常處理)

import

pickle

class

course:

def__init__

(self,name,price):

self.name =name

self.price =price

python = course('

python

',29800)

linux = course('

linux

',25800)

mysql = course('

mysql

',18000)

defmy_dump(course):

with open(

'pickle

','ab

') as f:

pickle.dump(course,f)

my_dump(python)

my_dump(linux)

my_dump(mysql)

with open(

'pickle

','rb

') as f:

while

true:

try:

content =pickle.load(f)

print

(content.name)

except

eoferror:

break

序列化模組

模組 乙個py檔案就是乙個模組.python開發效率之高 python的模組非常多,第三方庫.模組分類 1,內建模組 登入模組,時間模組,sys模組,os模組 等等.所有的擴充套件模組 3,自定義模組.自己寫的py檔案.序列化模組.序列化 創造乙個序列.例項化 創造乙個例項 物件 將乙個字典通過網路...

序列化模組

什麼叫序列化 將原本的字典 列表等內容轉換成乙個字串的過程就叫做序列化。那為什麼要序列化呢?比如,我們在python 中寫的一段 需要c上使用,那我們怎麼給?我們能想到的方法就是存在檔案裡,然後在c上再從檔案裡讀出來。但是我們都知道,對於檔案來說是沒有 不是所有的資料型別檔案都能夠識別的比如字典 列...

序列化模組

序列化模組 把某資料型別轉化成字串型別 序列化 字串型別轉化為其他資料型別 反序列化 josn模組 只有很少一部分資料型別能通過josn轉化成字串型別 字典 列表 元組 元組會轉化成列表 import json dic str dic json.dumps dic dumps字典型別轉化成字串型別 ...