常用模块-02

一、hashlib模块

1.1、hashlib模块提供了很多加密的算法,这里介绍一下hashlib的简单使用事例,用hashlib的md5算法加密数据

#python2的用法

m2 = hashlib.md5("a")  #这里还可以另外加上一个随机数,增加密码复杂度
src = "123456"
m2.update(src)      #对src这个数进行md5加密
print(m2.hexdigest()) #打印加密后的结果


#python3的用法

m3 = hashlib.md5("123456".encode("utf-8")) #增加随机数
src = bytes("ling", encoding="utf-8")    #转换为字节  
m3.update(src)
print(m3.hexdigest())

二、StringIO模块

在python2中是直接导入, 在python3中是放到io模块里了

2.1、在平时的开发过程中,有时候我们并不需要写在文件中,可以直接通过StringIO模块直接写入到系统内存中,如果不用了,直接清除就可以了。StringIO主要是用来在内存中写入字符串及字符串的缓存,它的接口和文件操作的接口是一致的,基本所有关于文件的方法都是可以用的,只要几个特殊的:

①、StringIO().getvalue():此函数没有参数,无论读写位置在哪里,都能够返回对象中的所有数据

②、StringIO().truncate(0):参数为0,表示清空所有写入的内容

③、StringIO().flush():刷新内部缓冲区

2.2、示例:

from io import StringIO

stringIO = StringIO()
stringIO.write("hello")    #写入到内存
stringIO.write("world")    #写入到内存
print(stringIO.getvalue())  #打印出来
stringIO.truncate(0)      #清空0之后的所有
print(stringIO.getvalue())  #再次打印没有东西了

test = dict(a=1)
print(bytes(str(test).encode("utf-8")))  #修改字典为byte格式,需要先转换为字符串才能修改

StringIO操作的只能是str,如果要操作二进制数据,就需要用BytesIO,二进制可以操作任何东西

三、json模块

3.1、JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写

①、json.dumps():把python对象转化成json数据类型

②、json.loads():把json数据类型转化成python对象

需要注意的是json是一个str类型,但是转换的话只能用上面两个互转而不能用str强制转换,不然再重新loads的话会报错

③、json.dump():把python对象写入文件

④、json.load():把文件转换成python对象

3.2、示例

import json

test = '''[{"a": 1, "aa": 11, "aaa": 111}, {"b": 2, "bb": 22, "bbb": 222}, {"c":3}]'''

newTest = json.loads(test)
print(type(newTest))
print(newTest[0]["a"])   #获取test的"a"值


3.3、爬取数据示例:

import json

import requests

url = "http://qwd.jd.com/fcgi-bin/qwd_activity_list?g_tk=1231472791&env=3"
session = requests.session()
r = session.get(url)
result = json.loads(r.text)  #转换为python对象
print(result["errCode"])
print(result["msg"])

3.4、示例:

import json
a = dict(hello="你好")
print(a)
print(a["hello"])
# print(str(a))
print(json.dumps(a, ensure_ascii=False))  #ensure_ascii=False做转码用避免乱码

#在python2中第一个打印a是内存中的显示形式,而在python3就不存在这种情况了

3.5、示例:

import codecs
import json

test = {"a": 1, "b": 2}
with codecs.open("1.txt", "w") as f:
json.dump(test, f)    #需要关闭文件才能操作,写入到1.txt文件内

with codecs.open("1.txt", "r") as f:
aa = json.load(f)
print(aa)
print(type(aa))

 

posted @ 2018-04-27 17:26  一条咸鱼的梦想  阅读(167)  评论(0编辑  收藏  举报