Day14 文件操作
-
hashlib的使用
-
hash加密的特点
- hash算法生成的摘要不可逆。(不能通过密文来获取原文)
- 只有相同的数据通过相同算法得到的摘要才是一致的
- 不管原数据多大,产生的摘要的大小(长度)一致。
-
生成hash摘要
- 通过算法创建hash对象: hashlib.算法名()
算法名:md5、shaXXX hash = hashlib.sha512()
-
添加数据
-
hash对象.update(数据)
-
注意:数据必须是二进制数据,类型是bytes
# hash.update(bytes('123456', encoding='utf-8')) hash.update('123456'.encode())
-
-
二进制和字符串之间的相互转换
-
字符串转二进制:
bytes(字符串, encoding='utf-8') 字符串.encode()
-
二进制转字符串:
str(二进制, encoding='utf-8') 二进制.decode()
-
-
获取摘要
result = hash.hexdigest() print(result) # e10adc3949ba59abbe56e057f20f883e
-
-
文件的操作
-
文件操作基本流程:打开文件 -> 操作文件(读、写) -> 关闭文件
-
打开文件
-
open(file, mode=‘r’, *, encoding=None) - 以指定方式打开指定文件,返回一个文件对象
-
file - 需要打开的文件在计算机中的位置信息(文件路径),字符串
绝对路径:文件在计算机中的全路径(一般从盘开始写)
相对路径:. - 表示当前目录(当前代码文件所在的文件夹), ./可以省略
… - 表示当前目录的上层目录 -
mode - 文件打开方式,决定打开文件后后续能对该文件进行的操作以及操作数据的类型。
第一组:‘r’、‘w’、‘a’ - 控制后续操作(是读还是写)
‘r’ - 只读
‘w’ - 只写, 会清空原文件内容
‘a’ - 只写, 会保留原文件内容 第二组:‘t’、‘b’ - 控制操作数据的类型
‘t’ - 读操作返回的数据和写操作写入的数据是字符串(str)
‘b’ - 读操作返回的数据和写操作写入的数据是二进制(bytes) 第一组必须选一个,第二组可以不选,不选的时候默认是t
注意:.二进制文件打开的时候必须带b -
encoding - 文本文件的编码方式(需要保证写入数据采用的什么方式进行编码,读数据的时候就需要对应的方式解码)
一般采用utf-8,但是很多windows文本默认编码方式是gbk
注意:只有在以t的方式打开文本文件的时候才需要考虑给encoding赋值
=========绝对路径=========== open(r'/Users/yuting/授课/python2103/01语言基础/day14-异常捕获和文件操作/合同.txt') =========相对路径========== open(r'./合同.txt') open('合同.txt') open('./res/a.txt') open('../day14-异常捕获和文件操作/合同.txt') ========r是只读========= f = open
-
-
-