python學習 day20 包 各種模組

2021-10-08 16:24:51 字數 4804 閱讀 8429

序列化模組 pickle

2.dump 和 load

3.對比dumps 和 dump

json

2.json 和 pickle 兩個模組區別

總結:hash

序列化:

反序列化:

php:

在檔案中儲存的資料,要麼是字串,要麼是位元組流

python中,所有的資料型別都可以通過dumps和loads進行序列化和反序列化

lst =[1

,2,3

]with

open

("ceshi2.txt"

,mode=

"a+"

,encoding=

"utf-8"

)as fp:

fp.write(lst)

lst =[1

,2,3

]res = pickle.dumps(lst)

print

(res)

def

func()

:print

("我是func函式")

res = pickle.dumps(func)

print

(res)

it =

iter

(range(10

))res = pickle.dumps(it)

res = pickle.loads(res)

print

(res,

type

(res)

)for i in

range(3

):res2 =

next

(res)

print

(res2)

dic =

with

open

("ceshi3.txt"

,mode=

"wb"

)as fp:

# dump(要轉換的資料,檔案物件)

pickle.dump(dic,fp)

with

open

("ceshi3.txt"

,mode=

"rb"

)as fp:

res = pickle.load(fp)

print

(res ,

type

(res)

)

dic =

str_bytes = pickle.dumps(dic)

print

(str_bytes)

with

open

("ceshi4.txt"

,mode=

"wb"

)as fp:

fp.write(str_bytes)

# 通過loads來取出

with

open

("ceshi4.txt"

,mode=

"rb"

)as fp:

str_bytes = fp.read(

) dic = pickle.loads(str_bytes)

print

(dic,

type

(dic)

)

引入模組:import json

dic =

# ensure_ascii=false 不通過ascii來顯示內容 sort_keys=true 對字典的鍵來進行排序

res =json.dumps(dic,ensure_ascii=

false

, sort_keys=

true

)print

(res ,

type

(res)

)# loads反序列化成原來的資料型別

dic = json.loads(res)

print

(dic ,

type

(dic)

)

dic =

with

open

("ceshi5.json"

,mode=

"w",encoding=

"utf-8"

)as fp:

# dump(要轉換的資料,檔案物件)

json.dump(dic,fp,ensure_ascii=

false

)# load反序列化成原來的資料型別

with

open

("ceshi5.json"

,mode=

"r",encoding=

"utf-8"

)as fp:

dic = json.load(fp)

print

(dic,

type

(dic)

)

json 可以連續dump , 不可以連續load (load是一次性拿出所有資料進行反序列化,容易出錯)

可以使用loads來解決

dic1 =

dic2 =

with

open

("ceshi6.json"

,mode=

"w",encoding=

"utf-8"

)as fp:

json.dump(dic1,fp)

fp.write(

"\n"

) json.dump(dic2,fp)

fp.write(

"\n"

)

with

open

("ceshi6.json"

,mode=

"r",encoding=

"utf-8"

)as fp:

dic = json.load(fp)

print

(dic)

解決方式,使用loads,一行一行進行反序列化

with

open

("ceshi6.json"

,mode=

"r",encoding=

"utf-8"

)as fp:

#檔案物件是迭代器,一次迭代一行

for i in fp:

dic = json.loads(i)

print

(dic)

import pickle

"""pickle 可以連續dump , 可以連續load

"""dic1 =

dic2 =

with

open

("ceshi7.pkl"

,mode=

"wb"

)as fp:

pickle.dump(dic1,fp)

pickle.dump(dic2,fp)

with

open

("ceshi7.pkl"

,mode=

"rb"

)as fp:

dic = pickle.load(fp)

print

(dic)

dic = pickle.load(fp)

print

(dic)

"""try .. except ..  抑制報錯 如果try**塊裡面有問題,就執行except中的**"""

"""try:

把有問題的**放進來

except:

如果出現異常執行這個分支的**塊.

"""try

:with

open

("ceshi7.pkl"

,mode=

"rb"

)as fp:

while

true

: dic = pickle.load(fp)

print

(dic)

except

:pass

json 和 pickle 兩個模組的區別:

hash值具備以下三個特點:

1、如果傳入的內容一樣,並且採用hash演算法也一樣,那麼得到個hash值一定是一樣的

2、hash值的長度取決於採用的演算法,與傳入的文字內容的大小無關

3、hash值不可逆

import

hash

# 加密

code =

hash

.md5(

'egon燒餅哈哈哈'

.encode(

'utf-8'

)code.update(

',燒中之燒'

.encode(

'utf-8'

)# 往後新增

# 獲取加密資料

res = code.hexdigest(

)

Java學習之路 day20

1 靜態 塊 static靜態 塊,當第一次用到本類時,靜態 塊執行唯一的一次 靜態內容總是優先於非靜態的 先有類在有物件 所以靜態 塊比構造方法先執行 靜態 塊的典型用途 用來一次性的對靜態成員進行賦值 2 靜態是不能直接訪問非靜態的,如果想訪問必須要先建立物件,讓物件去呼叫非靜態 靜態變數不可設...

Day20 高階函式

今天主要學習了python中sorted,filter,map 三個高階函式,還了解了一下函式的柯里化 1.什麼是高階函式def way1 x return x 3 def way2 x return x x result way2 way1 7 print result 1002.標準庫中的高階函...

暑期訓練 day20

暑期訓練 day20 趙景樂今天看完了第二章的內容,有點多,現在想想記得的沒多少,還需要鞏固鞏固,找個時間再把相應的 打一打。今天訓練賽的a題錯了兩次,沒想到暴力能過,還是一開始打的麻煩了,c題是數學題,因為一開始沒優化到底,結果超時了,剪枝 改良公式也算剪枝吧,畢竟少了一重迴圈 後就過了,b題一開...