hash加密(摘要)的算法主要有两类:md5和sha-X系列
-
1.hash加密的特点
"""
1)hash算法生成的摘要不可逆。(不能通过密文来获取原文)
2)只有相同的数据通过相同的算法得到的摘要才是一致的。
3)不管原数据多大,产生的摘要的大小(长度)一致。
“”"
import hashlib # 导入hashlib模块
- 2.生成hash摘要
"""
1)通过算法创建hash对象
算法名:md5、shaXXX
“”"
hash = hashlib.md5()
- 2)添加数据
#hash对象.update(数据)
#注意:数据必须是二进制数据,类型是bytes
#补充:二进制和字符串之间的相互转换
"""
字符串转二进制:
bytes(字符串,encoding=‘utf-8’)
字符串.encode()
二进制转字符串
str(二进制,encoding=‘utf-8’)
二进制.decode()
“”"
# hash.update(bytes('123456', encoding='utf-8'))
hash.update('123456'.encode())
- 3.获取摘要
result = hash.hexdigest()
print(result, type(result)) # e10adc3949ba59abbe56e057f20f883e <class 'str'>
练习:判断文件内容是否被修改
hash = hashlib.md5()
with open('合同.txt', 'rb') as f:
hash.update(f.read())
print(hash.hexdigest())
文件操作
1.数据持久化
什么时候需要数据持久化
"""
1)用文件操作需要持久化的数据
2)在需要这个数据的时候从文件中读这个数据
3)在数据发生改变后,需要将最新的数据写入到文件中
“”"
"""
程序中保存的数据默认都是保存在运行内存中的,在程序运行结束的时候都会被释放。
如果希望这次运行程序产生的数据在下次程序运行的时候还能用,就需要将数据保存到硬盘中。
将数据保存到硬盘的过程就叫数据持久化的过程,硬盘保存数据的基本单元是文件,将数据保存到硬盘中就是将数据保存到文件中。
程序中数据持久化的常用文件类型:数据库文件( .db ; .sqlite 等)、plist文件、json文件、
txt文件、二进制文件(图片、视频、音频、exe可执行文件)
“”"
2.文件操作 - 操作文件的内容
"""
文件操作基本流程:打开文件、操作文件(读、写)、关闭文件
“”"
-
1)打开文件
"""
open(file, mode=‘r’, *, encoding=None) - 以指定方式打开指定文件,返回一个文件对象file - 需要打开的文件在计算机中的位置信息(文件路径),字符串
绝对路径:文件在计算机中的全路径(一般从盘开始写)
相对路径:. (表示当前目录)
.. (表示当前目录的上层目录)
mode - 文件打开方式,决定打开文件后后续能对改文件执行的操作,以及操作数据的类型。
第一组:‘r’‘w’‘a’ - 控制后续操作(读还是写)
第二组:‘t’‘b’ - 控制操作数据的类型
第一组必须选一个(默认’r’),第二组可以不选(默认是’t’)
‘r’ - 只读
‘w’ - 只写,清空原文件内容
‘a’ - 只写,会保留原文件内容
‘t’ - 读取的数据和写入的数据是字符串(str)
‘b’ - 读取的数据和写入的数据是二进制(byte)
注意:1.二进制文件打开的时候必须带b
2.
encoding - 文本文件的编码方式(需要保证写入数据的编码和读取数据的编码保持一致)
默认采用utf-8,(很多Windows文本默认编码方式是gbk)
注意:只有在以t的方式打开文本文件的时候才需要考虑encoding赋值
“”"
绝对路径 - 可以打开电脑上任意位置的任意文件
open(r'F:\ppt.txt')
相对路径 - 打开当前工程所在的任意文件
open(r'.\世界上最遥远的地方.txt')
open(r'世界上最遥远的地方.txt') # 效果同上
open(r'.\res\01.txt')
open(r'..\day14 异常捕获和文件操作\res\01.txt')
open(r'..\..\python2103\day14 异常捕获和文件操作\res\01.txt')
’r’ - 只读
f = open(r'..\..\ppt.txt', 'r')
f.read()
f.write('abc') # io.UnsupportedOperation: not writable
’a’ - 只写,并保留原文件内容
f = open(r'..\..\ppt.txt', 'a'