1. 程式人生 > >python常用模塊2

python常用模塊2

處理 進行 class unicode python 硬盤 json pen mps

python常用模塊二

shelve
pickle
json


shelve模塊

  • 內部結構其實就是字典類型,存儲的時候指定對應的key,將內容作為value存儲起來,取出也直接通過key取出value.
  • 註意,文件名不需要任何後綴,因為系統默認會將 .db 作為後綴名.

  • 代碼1存儲內容

import shelve
def fun1():
    pass
s = shelve.open(‘test_shelve‘)
s[‘dic‘] = {}.fromkeys(list(‘abcdefg‘), 0)
s[‘func‘] = fun1
s[‘list‘] = list(range(10))
s.close()
  • 代碼2取出內容
s = shelve.open(‘test_shelve‘)
s = shelve.open(‘test_shelve‘)
d = s.get(‘dic‘)
func = s.get(‘func‘)
lst = s.get(‘list‘)

pickle模塊

  • 寫入和讀取時是以字節的形式讀取的,可以指定編碼和解碼格式

  • 寫入文件

import pickle
f = open(‘save.pkl‘, ‘wb‘, encoding=‘utf8‘)
dic = {}.fromkeys(list(‘qwertasd‘), 1)
pickle.dump(dic, f)
f.close()
  • 讀取文件
import pickle
f = open(‘save.pkl‘, ‘rb‘)
data = pickle.load(f)
print(data, type(data))

json模塊

  • 模塊如下功能:

    • Json模塊提供了四個功能:dumps、dump、loads、load

    • pickle模塊提供了四個功能:dumps、dump、loads、load

  • 代碼1:將內容以json序列化形式存入文件

s = [‘我‘, ‘你‘, ‘它‘, ‘asdas‘]
f = open(‘save.json‘, ‘w‘)
json.dump(s, f)
f.close()
  • 代碼2:使用json模塊讀取json格式內容
f1 = open(‘save.json‘, ‘r‘, encoding=‘utf8‘)
result = json.load(f1)
# result = json.loads(f1.read())
  • 將字符串json序列化處理,存入文件的都是unicode格式的編碼
data = json.dumps(s)
print(data, type(data))
# ["\u6211", "\u4f60", "\u5b83"] <class ‘str‘>


result = json.loads(data) # 直接反序列json序列化數據
print(result)
# [‘我‘, ‘你‘, ‘它‘]

json、pickle、shelve三個區別

主要區別有幾下幾點:

  1. pickle和shelve模塊支持python所有的數據類型,包括函數;但是json只是支持dic/list/tuple/str/int等數據類型;
  2. pikle和shelve只能在python中使用,但是json是跨語言的;

json、pickle、shelve三個模塊的作用

  • 用於字符串和python或其他編程語言數據類型間進行轉換,不僅可以保存數據到硬盤,還可以保存它的數據類型

python常用模塊2