av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

python爬取之json、pickle與shelve庫的深入講解

瀏覽:3日期:2022-06-25 18:41:55
前言

在使用Python進行網絡編程或者爬取一些自己感興趣的東西時,總避免不了進行一些數據傳輸、存取等問題,Python的文件對象以及其他擴展庫,已經解決了很多關于文本和二進制數據存取的問題,比如網頁內容、圖片&音視頻等多媒體內容,但這些數據基本是最終的數據形態存儲,有沒有辦法可以存儲Python本身的一些對象數據,后續在使用的時候,再直接加載為Python對象即可,本文便講解下常用的Python對象數據存取、傳輸解決方案,即pickle、shelve、json。

內容比較基礎,也比較簡單,但也是必須好好掌握的知識點,因為其潛在的應用場景太廣

一、pickle

pickle庫提供了一種將Python對象(所有對象)本地化存儲的解決方案,后續還可以從這些文件內重新加載,加載后又是Python標準的對象數據,可以用Python直接使用。

pickle有以下特點:

可以存取所有類型Python對象,并本地化到一個文件內 每個文件內只能存儲一個Python對象

1.1 臨時轉換

可以將Python對象臨時轉化為pickle序列(存儲在變量內而不是文件內),后續再進行加載使用。

import picklea=[1,2,3,4]#以下將a轉化為pickle序列p_a=pickle.dumps(a) #以下將pickle序列轉化為Python對象a=pickle.loads(p_a)

1.2 永久化存取

可以將Python對象存儲到本地文件內,方便下次取出繼續使用。

import picklea=[1,2,3,4]f=open(’file.pkl’,’wb’) #以下將a轉化為pickle序列并存儲到本地文件p_a=pickle.dump(a,f) f=open(’file.pkl’,’rb’)#以下將存儲在本地文件內的pickle序列轉化為Python對象a=pickle.load(f) f.close()

以上,首先打開一個文件,注意,因為pickle序列是二進制編碼格式,所以文件模式需要有’b’

然后將Python對象序列化并存儲到本地文件

后續可通過加載該文件,將里面存儲的數據重新加載為Python對象

二、shelve

shelve庫相當于基于pickle的優化,因為pickle單文件只能存儲單個Python對象,并且每次存取都需要使用dump和load,比較繁瑣,所以,該庫主要做了以下優化:

創建了一個輕量級的鍵值對數據庫,支持一個文件內存儲多個Python對象 不需要每次都load,對Python數據的存取,變成了標準的字典訪問

以下是演示代碼:

import shelvedb=shelve.open(’obj_db’)class A:...a=[1,2,3];b=dict(name=’dennis’);c=Adb[’a’]=adb[’b’]=bdb[’c’]=c db[’a’]db[’b’]db[’c’] db.close()

以上代碼,首先使用shelve的open方法創建一個db,可以指定db文件的存儲地址

然后便可以像使用字典一樣,用來在該鍵值對的db內存儲Python對象(任何Python對象)

然后可像字典訪問一樣,重新取出之前已經存儲的對象,最后,別忘了戰術性關閉db

如果想遍歷或內省某db內存量鍵值,該db也有keys()和values()方法,也支持Python的迭代協議

所以,相較于pickle來說,會方便和強大很多

三、json

json是進行網絡數據傳輸應用最為廣泛的數據格式,其可以將Python指定的一些數據對象轉化為json字符串,便于進行存儲和網絡傳輸,并將該json序列化的字符串重新轉變為Python對象。

大體過程為Python→JSON→Python,所以可以進行CS數據傳輸和通信。

以下為json和Python數據轉換映射表:

JSON Python object dict array list string str number (int) int number (real) float true,false Ture,False null None

3.1 臨時轉換

可以將Python對象臨時轉化為json字符串并賦值給某變量,待后續再對其轉化為Python對象

一般用于網絡傳輸,尤其是接口調用時數據傳輸。

import jsonmylist=[1,2,3]mydict={ ’name’:dennis}#臨時轉換a=json.dumps(mydict)b=json.dumps(mylist)#將json字符串重新轉為Python對象mylist=json.loads(b)mydict=json.loads(a)

3.2 永久化存取

可以將Python對象轉換為json字符串并永久性存儲在本地文件內,便于后續重新加載使用。

import jsonmylist=[1,2,3]mydict={ ’name’:dennis} #將Python對象轉化為json字符串,同時存儲到file內with open(’myjson.json’,’w’) as f: json.dump(mydict,f) #將存儲在文件內的json字符串加載并轉化為Python對象with open(’myjson.json’,’r’) as f: json.load(f)總結

到此這篇關于python爬取之json、pickle與shelve庫的文章就介紹到這了,更多相關python json、pickle與shelve庫內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 韩国毛片一区二区三区 | 中文字幕在线观看一区 | av网站在线播放 | 中日韩欧美一级片 | 欧美日韩国产欧美 | 久久国产精品久久久久久 | 天天天久久久 | 亚洲国产中文字幕 | 日韩亚洲一区二区 | 色综合久久天天综合网 | www.色综合| 国产视频观看 | 国产精品一区一区 | a级大毛片| 北条麻妃一区二区三区在线视频 | 网页av| 亚洲精品一区二区三区四区高清 | 一区二区三区精品视频 | 国产欧美日韩视频 | 日韩视频精品在线 | 国产精品一区二区欧美 | 久久久久久国产免费视网址 | 国产韩国精品一区二区三区 | 国产高清一区二区三区 | 九九99靖品 | 欧美最猛性xxxxx亚洲精品 | 污视频免费在线观看 | 国产精品久久久久久婷婷天堂 | 欧美精品综合 | 日韩成人在线电影 | 九九久久精品 | 中文字幕亚洲视频 | 天天欧美 | 久久久毛片 | 中文字幕免费在线观看 | 色就干 | 久久精品免费 | 99精品国产一区二区三区 | 亚洲精品天堂 | 欧美日韩在线播放 | 亚洲精品高清视频在线观看 |