python的hashlib模块和string模块,json模块

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类中的方法:

类型用法
reads.read([n])参数n限定读取长度,int类型;缺省状态为从当前读写位置读取对象s中存储的所有数据。读取结束后,读写位置被移动。
readlines.readline([length])参数length限定读取的结束位置,int类型,缺省状态为None:从当前读写位置读取至下一个以“\n”为结束符的当前行。读写位置被移动。
readliness.readlines([sizehint])参数sizehint为int类型,缺省状态为读取所有行并作为列表返回,除此之外从当前读写位置读取至下一个以“\n”为结束符的当前行。读写位置被移动。
writes.write(s)从读写位置将参数s写入给对象s。参数s为str或unicode类型。读写位置被移动。
writelines.writelines(list)从读写位置将list写入给对象s。参数list为一个列表,列表的成员为str或unicode类型。读写位置被移动。
getvalues.getvalue()此函数没有参数,返回对象s中的所有数据。
truncates.truncate([size])从读写位置起切断数据,参数size限定裁剪长度,缺省值为None。
tells.tell()返回当前读写位置。
seeks.seek(pos[,mode])移动当前读写位置至pos处,可选参数mode为0时将读写位置移动至pos处,为1时将读写位置从当前位置起向后移动pos个长度,为2时将读写位置置于末尾处再向后移动pos个长度;默认为0。
closes.close()释放缓冲区,执行此函数后,数据将被释放,也不可再进行操作。
isattys.isatty()此函数总是返回0。不论StringIO对象是否已被close()。
flushs.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、load

  • dumps 和 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}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值