天天看点

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}