Python学习_13 内置模块(二)
2018-04-26
1、hashlib模块
hashlib是个专门提供hash算法的库,支持openssl库提供的所有算法,包括md5, sha1, sha224, sha256, sha384, sha512,这里主要学习md5
MD5的全称是Message-Digest Algorithm 5(信息-摘要算法)。128位长度。目前MD5是一种不可逆算法
加密例子如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time: 2018/4/27 10:23
# @Auther: xiexiaolong
# @File: demon1.PY
import
hashlib
m = hashlib.md5(
"sdfwfg"
.encode(
"utf-8"
))
src =
bytes
(
"xie"
,
encoding
=
"utf-8"
)
m.update(src)
print
(m.hexdigest())
结果:
D:\python\venv\Scripts\python.exe D:/python/0427/demon1.py
8bcb24c8b1421bb124473b5f5d0dcb14
Process finished with exit code 0
分析:
m = hashlib.md5(
"sdfwfg"
.encode(
"utf-8"
))中定义了一个随机码,指定字符集编码;
src =
bytes
(
"xie"
,
encoding
=
"utf-8"
) python3中必须要把str类型转换成二进制类型再加密
2、StringIO模块和BytesIO模块
a>StringIO
在平时开发过程中,有些时候我们可能不需要写在文件中,我们可以直接通过StringIO模块直接写入到系统内存中,如果不用了,可以直接清除就可以了。StringIO主要是用来在内存中写入字符串的,及字符串的缓存。他的接口和文件操作的接口是一致的,基本所有关于文件的方法都可以
s.getvalue() 此函数没有参数,无论读写位置在哪里,都能够返回对象s中的所有数据。
s.truncate(0) 参数为0,表示清空所有写入的内容
s.flush() 刷新内部缓冲区。
b>BytesIO模块
StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。
用法如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time: 2018/4/27 10:23
# @Auther: xiexiaolong
# @File: demon1.PY
from
io
import
StringIO,BytesIO
stringIO = StringIO()
stringIO.write(
"hello word
\n
"
)
stringIO.write(
"hello xiexiaolong"
)
print
(stringIO.getvalue())
stringIO.truncate(
0
)
print
(
"##"
*
10
)
print
(stringIO.getvalue())
结果:
D:\python\venv\Scripts\python.exe D:/python/0427/demon1.py
hello word
hello xiexiaolong
####################
Process finished with exit code 0
分析:因为
StringIO
是一个类,所以使用之前要实例化;当调用stringIO.truncate(0)之后,内存中被清空了,所以再次打印是空的
3、json模块
Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式。Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式。现在也常用于http请求中。
最长用的几种方式:
dumps和loads 带s的就是字符串,dumps 将Python对象编码成json字符串;loads把json字符串转换成python对象,很多东西给我们的就是一个json字符串,我们必须先转换成python对象才可以使用
dump和load 不带s的就是处理文件的
dumps例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time: 2018/4/27 10:23
# @Auther: xiexiaolong
# @File: demon1.PY
import
json
test1 = [{
"a"
:
1
,
"aa"
:
11
,
"aaa"
:
111
},{
"b"
:
2
,
"bb"
:
22
,
"bbb"
:
222
},{
"cc"
:
33
}]
test2 =
'''{'aaa': 111, 'bbb': 222}'''
newtest1 = json.dumps(test1)
print
(
type
(newtest1))
print
(newtest1)
结果:
D:\python\venv\Scripts\python.exe D:/python/0427/demon1.py
<class 'str'>
[{"a": 1, "aa": 11, "aaa": 111}, {"b": 2, "bb": 22, "bbb": 222}, {"cc": 33}]
Process finished with exit code 0
分析:把Python列表转换成json字符串
loads例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time: 2018/4/27 10:23
# @Auther: xiexiaolong
# @File: demon1.PY
import
json
test1 =
'[{"a": 1, "aa": 11, "aaa": 111},{"b": 2, "bb": 22, "bbb": 222},{"cc" : 33}]'
test2 =
'''{'aaa': 111, 'bbb': 222}'''
newtest1 = json.loads(test1)
print
(
type
(newtest1))
print
(newtest1[
0
][
"a"
])
结果:
D:\python\venv\Scripts\python.exe D:/python/0427/demon1.py
<class 'list'>
1
Process finished with exit code 0
分析:loads把字符串转换成Python格式
4、requests
requests模块是一个用户网络访问的模块,首先要手工安装
用命令pip install requests (python3已经有pip,python2要手工安装pip
)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time: 2018/4/27 10:23
# @Auther: xiexiaolong
# @File: demon1.PY
import
requests
import
json
session = requests.session()
r = session.get(url)
result = json.loads(r.text)
print
(
type
(r))
print
(result[
"errCode"
])
结果:
"C:\Program Files\Python36\python.exe" D:/python/0427/demon1.py
<class 'requests.models.Response'>
0
Process finished with exit code 0
分析:调用模块requests模块的函数,获取到url、返回值,这个值是一个字符串,用
json.loads
方法转换成python形式再输出