内置函数简析
一、 hashlib:
代码如下:
#!/usr/bin/env python # -*- coding:utf8 -*- # @Time : 2018/4/27 9:01 # @Author : hantong # @File : 20180426_hashlib.py #hashlib # hashlib模块代替了Python2中的md5和sham模块,使用这个模块一般分为3步 # 1.创建一个哈希对象,使用哈希算法命名的构造函数或通用构造函数hashlib.new(name[, data]) # 2.使用哈希对象调用update()方法填充这个对象 # 3.调用digest() 或 hexdigest()方法来获取摘要(加密结果) # 注: # 1.update()方法需要接收的参数是一个字节对象(字节字符串,如:b"Hello,World!") # 2.常用的一些算法主要有: SHA1, SHA224, SHA256, SHA384, SHA512, MD5等算法 # 3.SHA1算法比较早,是不能抵抗暴力破解的 import hashlib print(hashlib.md5('gtgt'.encode("utf8"))) #从执行结果可以看出这里打印的仅仅是hash对象,并非最终结果 #这里要注意的是必须申明编码规则,否则报错,python2无需申明编码规则 hash = hashlib.md5() hash.update('hello'.encode("utf8")) #这里要注意的是必须申明编码规则,否则报错,python2无需申明编码规则 print(hash.hexdigest())
执行结果:
<md5 HASH object @ 0x00000000005CE8F0>
5d41402abc4b2a76b9719d911017c592
二、StringIO与BytesIO:
代码如下:
#!/usr/bin/env python # -*- coding:utf8 -*- # @Time : 2018/4/27 9:40 # @Author : hantong # @File : 20180426_StringIO.py # StringIO模块主要用于在内存缓冲区中读写数据。模块是用类编写的,只有一个StringIO类, # 所以它的可用方法都在类中。此类中的大部分函数都与对文件的操作方法类似。 #StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。 from io import StringIO from io import BytesIO s = StringIO() s.write("new.baidu.com\n") s.write("news.com.cn") print(s.getvalue()) #getvalue()方法用于获取写入后的setr # print(s.truncate([size])) #从读写位置起切断数据,参数size限定裁剪长度,缺省值为None s.tell() #返回当前读写位置 s.close() s.flush() #刷新内部缓冲区 #实例化StringIO,然后操作它,类似文件的处理方式 ss = StringIO("Hello World!\nMorning") print(ss.read()) print(ss.getvalue()) ss.close() #必须关闭,否则会一直存在内存中 by = BytesIO() by.write("hello".encode("utf8")) #Python3如果不申明编码规则会报错,python2不需申明 print(by.getvalue()) by.close()
执行结果:
new.baidu.com
news.com.cn
Hello World!
Morning
Hello World!
Morning
b'hello'