天天看點

python 加密子產品、StringIO/BytesIO子產品、json子產品

1,加密子產品 hashlib()

以常見的算法MD5為例,計算出一個字元串的MD5值:

import hashlib

md5 = hashlib.md5()
md5.update('sixgod'.encode('utf-8'))
print(md5.hexdigest())      
結果為:765471714a1a998d47b1072e29d56730      

還可以根據一個随機數進行加密,如:

import hashlib

md5 = hashlib.md5("123456".encode("utf-8"))
md5.update('sixgod'.encode('utf-8'))
print(md5.hexdigest())      
這裡給的是123456,還可以給複雜的。      

2,StringIO, BytesIO

1.StringIO 如果頻繁的進行讀寫操作,可以先在記憶體中進行,StringIO 顧名思義就是在記憶體中以 io 流的方式讀寫 str。

要把str寫入StringIO,我們需要先建立一個StringIO,然後,像檔案一樣寫入即可:

from io import StringIO

stringIO = StringIO()
stringIO.write("hello wrold\n")
stringIO.write("hello\n")      
此時是沒有輸出的,getvalue()方法用于獲得寫入後的str,truncate(0) 用于清除内容。      
from io import StringIO

stringIO = StringIO()
stringIO.write("hello wrold\n")
stringIO.write("hello\n")
print(stringIO.getvalue())#讀出      
結果為:hello wrold
    hello      

2.BytesIO

StringIO操作的隻能是str,如果要操作二進制資料,就需要使用BytesIO。

BytesIO實作了在記憶體中讀寫bytes,我們建立一個BytesIO,然後寫入一些bytes:

from io import StringIO,BytesIO

bytesIO = BytesIO()
bytesIO.write("123".encode("utf-8"))
print(bytesIO.getvalue())      
結果為:b'123'      

可以看見是以b為開頭的。

3.json子產品

JSON (JavaScript Object Notation) 是一種輕量級的資料交換格式。它基于ECMAScript的一個子集。

Python3 中可以使用 json 子產品來對 JSON 資料進行編解碼。

dumps和loads 帶s的就是處理字元串

dump和load 不帶s的就是處理檔案的

1.loads,dumps

有一個字元串test,跟字典很像,但是并不能直接擷取a的值,此時我們就可以進行轉換。

import json
test = '[{"a": 1, "aa": 11, "aaa": 111}, {"b": 2, "bb": 22, "bbb": 222}'
print(type(test))
newTest = json.loads(test)
print(type(newTest))
print(newTest[0]["a"])      
結果為:<class 'str'>
    <class 'list'>
    1      

還可以用dumps再進行轉回:

xxx = json.dumps(newTest)
print(type(xxx))      
結果為:<class 'str'>      

2.load,dump

dump(s, f)

把json字元串s直接寫入到檔案中去:

test = {"a": 1, "b": 2}
with codecs.open("1.txt", "w") as f:
    json.dump(test, f)      

M = load(f)

直接把檔案内容取出來,給M,M類unicode類型

with codecs.open("1.txt","r") as f:
    a = json.load(f)
    print(a)      
結果為:{'b': 2, 'a': 1}