hashlib模块
python中的hashlib模块用来进行hash或者md5加密,而且这种加密是不可逆的,所以这种算法又被称为摘要算法。其支持Openssl库提供的所有算法,包括md5、sha1、sha224、sha256、sha512等。
常用的属性和方法:
digesti_size:产生的散列的字节大小
md5()/sha1():创建一个md5或者sha1加密模式的hash对象
update(arg):用字符串参数来更新hash对象,如果同一个has对象重复调用该方法,如下:m.update(a); m.update(b),则等于m.update(a+b)
digest():返回摘要,作为二进制数据字符串值
hexdigest():返回摘要,作为十六进制数据字符串值
copy():复制一般我们使用最多的就是update
import hashlib
m = hashlib.md5()
m.update('how to use md5'.encode('utf-8'))
m.update('in python hashlib'.encode('utf-8'))
print(m.hexdigest())
#输出
9f97604918a2e86bfcc4aea5c35a4c8b
stringio模块
StringIO经常被用来作为字符串的缓存,因为StringIO有个好处,他的有些接口和文件操作是一致的,也就是说用同样的代码,可以同时当成文件操作或者StringIO操作。
StringIO类中的方法:
类型 | 用法 |
---|---|
read | s.read([n])参数n限定读取长度,int类型;缺省状态为从当前读写位置读取对象s中存储的所有数据。读取结束后,读写位置被移动。 |
readline | s.readline([length])参数length限定读取的结束位置,int类型,缺省状态为None:从当前读写位置读取至下一个以“\n”为结束符的当前行。读写位置被移动。 |
readlines | s.readlines([sizehint])参数sizehint为int类型,缺省状态为读取所有行并作为列表返回,除此之外从当前读写位置读取至下一个以“\n”为结束符的当前行。读写位置被移动。 |
write | s.write(s)从读写位置将参数s写入给对象s。参数s为str或unicode类型。读写位置被移动。 |
writeline | s.writelines(list)从读写位置将list写入给对象s。参数list为一个列表,列表的成员为str或unicode类型。读写位置被移动。 |
getvalue | s.getvalue()此函数没有参数,返回对象s中的所有数据。 |
truncate | s.truncate([size])从读写位置起切断数据,参数size限定裁剪长度,缺省值为None。 |
tell | s.tell()返回当前读写位置。 |
seek | s.seek(pos[,mode])移动当前读写位置至pos处,可选参数mode为0时将读写位置移动至pos处,为1时将读写位置从当前位置起向后移动pos个长度,为2时将读写位置置于末尾处再向后移动pos个长度;默认为0。 |
close | s.close()释放缓冲区,执行此函数后,数据将被释放,也不可再进行操作。 |
isatty | s.isatty()此函数总是返回0。不论StringIO对象是否已被close()。 |
flush | s.flush()刷新内部缓冲区。 |
- stringIo简单的例子
from io import StringIO, BytesIO
stringIO = StringIO()
stringIO.write("hello world")
stringIO.write("lalalalla, wo shi mai bao de xiao hang jia")
print(stringIO.getvalue())
stringIO.truncate(0)
print(stringIO.getvalue())
#输出
hello worldlalalalla, wo shi mai bao de xiao hang jia
json模块
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。JSON的数据格式其实就是python里面的字典格式,里面可以包含方括号括起来的数组,也就是python里面的列表。
在python中,有专门处理json格式的模块—— json
Json 模块提供了四个方法: dumps、dump、loads、loaddumps 和 dump:
dumps和dump 序列化方法
dumps只完成了序列化为str,
dump必须传文件描述符,将序列化的str保存到文件中dump和dumps例子
import json
print(json.dumps([]))
print(json.dumps(1))
print(json.dumps('1'))
dict = {"name":"Tom", "age":23}
print(json.dumps(dict))
#输出
[]
1
"1"
{"name": "Tom", "age": 23}
a = {"name":"Tom", "age":23}
with open("test.json", "w", encoding='utf-8') as f:
# indent 超级好用,格式化保存字典,默认为None,小于0为零个空格
f.write(json.dumps(a, indent=4))
# json.dump(a,f,indent=4) # 和上面的效果一样
#查看文件
{
"name": "Tom",
"age": 23
}
loads 和 load
loads和load 反序列化方法
loads 只完成了反序列化,
load 只接收文件描述符,完成了读取文件和反序列化load和loads的例子
json.loads('{"name":"Tom", "age":23}')
#输出
{'age': 23, 'name': 'Tom'}
import json
with open("test.json", "r", encoding='utf-8') as f:
aa = json.loads(f.read())
f.seek(0)
bb = json.load(f) # 与 json.loads(f.read())
print(aa)
print(bb)
#输出
{'name': 'Tom', 'age': 23}
{'name': 'Tom', 'age': 23}