python學習day4之路檔案的序列化和反序列化

2022-08-03 19:06:24 字數 2126 閱讀 3935

json和pickle序列化和反序列化

json是用來實現不同程式之間的檔案互動,由於不同程式之間需要進行檔案資訊互動,由於用python寫的**可能要與其他語言寫的**進行資料傳輸,json支援所有程式之間的互動,json將取代xml,由於xml格式稍微比較複雜。現在程式之間的互動都是用json來進行檔案資訊的互動。

在使用json序列化和反序列化的時候,dump一次,就要load一次,不能操作。

json序列化的過程,就是寫入檔案中,讓另外乙個程式語言進行呼叫:

import json

info =

with open("file","w") as f:

f.write(json.dumps(info))

上述**使用json將info字典資訊寫入到乙個檔案中,檔案中只能儲存字串格式的資訊,或者二進位制檔案的資訊,不能存放數字等資訊,放入檔案中的資訊都是字串型別的,這點一定要注意.

json反序列化的過程:

import json

'''反序列化起始就是把dump進去的資訊進行提取,以實現不同程式語言的互動'''

with open("file","r") as f:

data = json.loads(f.read())

print(data)

print(type(data))

print(data["alex"])

上面**,將使用json格式存入的資訊讀取出來,如下所示:

sb上述**實現了將字串資訊讀取問字典的功能,其實,序列化和反序列化就是將原來的格式先轉化為字串,然後在讀取出來的過程,以便能夠實現互動.

我們也可以使用其他方式進行序列化和反序列化,我們知道,有乙個函式eval(),能夠實現把字串資訊轉化為原本樣式,如下:

info = [11,22,33,65,33]

with open("test.text","w") as f:

f.write(str(info)) #使用wirte()只能向檔案中寫入字串格式的資訊,不能寫入其他型別的資訊

with open("test.text","r") as f_obj:

data = f_obj.read()

data = eval(data)

print(type(data))

print(data)

程式執行如下:

[11, 22, 33, 65, 33]

上述過程中,我們利用python自帶的eval()函式也實現了序列化和反序列化的過程,但是由於序列化和反序列化是在同乙個程式中實現的,在其他程式中有沒有eval()是不確定的,但是json支援所有的程式語言,所以現在一般都使用json實現不同程式語言之間的資訊互動.

dump和load也是實現上面dumps和loads的功能,只是實現的方式不一樣而言,語法稍微有一些區別,如下:

dump序列化:

import json

info =

with open("file","w") as f:

json.dump(info,f)

load()反序列化:

import json

'''反序列化起始就是把dump進去的資訊進行提取,以實現不同程式語言的互動'''

with open("file","r") as f:

data = json.load(f)

print(data)

print(type(data))

print(data["alex"])

上面程式實現了序列化和反序列化的功能,dump(資訊,檔案路徑),load(檔案路徑),從哪個檔案讀取資訊.

在不同程式間實現資料的交換.

不同程式之間的資料交換,或者是將字串的資訊轉化為原有的形式;

eval()函式的功能也很強大,能夠之間將字串形式的資訊轉化為原有的資訊,如下:

>>> dic = ""

>>> data = eval(dic)

>>> data

程式只dump一次,load一次,不能dump多次.dumps好幾個檔案實現; 

C 學習之路 day4

day4知識點 mystring類物件自我實現以及部分實驗源 ifndef mystring h define mystring h include class mystring endif mystring h include mystring.h include mystring mystrin...

Linux學習之路 day 4

一 檔案目錄類 1.pwd 顯示當前目錄的絕對路徑。絕對路徑 從根目錄 開始寫起的檔案或目錄名稱,即從根目錄開始定位到需要的目錄中去 相對路徑 相對於當前路徑的寫法,即從當前工作目錄開始定位到需要的目錄中去 2.ls 列出當前目錄中所有的子目錄和檔案。不包含 開頭的檔案 a 顯示當前目錄下的所有檔案...

Python學習日記day4

turtle庫的使用 知識點1 turtle的繪圖窗體,螢幕左上角的座標為 0,0 turtule.setup width,height,startx,starty 設定窗體大小及位置。基本繪圖中,setup函式並不是必須的。知識點2 turtle空間座標體系。turtle最開始位於正中心。turt...