2021-5-15文件操作
1.hashlib的使用
import hashlib
hash摘要(加密)的算法主要分两类:MD5 和sha-X系列
- hash 加密的特点
- hash算法生成的摘要不可逆.(不能通过密文来获取原文)
- 只有相同的数据通过相同算法得到的摘要才是一致的
- 不管元数据多大产生的摘要的大小(长度)一致
- 生成hash摘要
-
通过算法创建hash对象:hashlib.算法名()
- 算法名:md5 shaXXX
- hash = hashlib.md5()
- hash = hashlib.sha1()
-
添加数据
-
hash对象.update(数据)
-
注意:数据必须是二进制数据,类型是bytes
-
步长:二进制和字符串之间的相互转换
- 字符串转换二进制:
bytes(字符串,encoding='utf-8') 字符串.encode()- 二进制转换字符串:
str(二进制,encoding='utf-8') 二进制.decode() -
获取摘要
result = hash.hexdigest() print(result) # 827ccb0eea8a706c4c34a16891f84e7b -
2. 文件操作
- 数据持久化
程序中保存的数据默认都是保存在运行内存中的,在程序运行结束的时候都会被释放.
如果希望这次运行程序产生的数据在下一次运行程序的时候还能用,就需要将数据保存到硬盘中(磁盘)
将数据保存懂啊硬盘的过程就是数据持久化的过程.
硬盘保存数据的基本单元是文件,所以如果要将数据保存到硬盘中,只需要将数据保存在文件中.
程序中数据持久化的常用文件类型:数据库文件(.db .sqlite等)plist文件 json文件 txt文件 二进制文件(图片,视频,音频,exe可执行文件)
- 文件操作 - 操作文件的内容
文件操作基本流程: 打开文件 -> 操作文件(读,写) -> 关闭文件
- 打开文件
"""
open(file,mode='r',*,encoding=None) - 以指定方式打开指定文件,返回一个文件对象
a.file - 需要打开的文件在计算机中的位置信息(文件路径),字符串
绝对路径:文件在计算机中的全路径(一般从盘开始写)
相对路径: . - 表示当前目录(当前代码文件所在的文件夹)
.. - 表示当前目录的上层目录
b.mode - 文件打开方式,决定打开文件后后续能对该文件进行的操作以及操作数据的类型.
第一组: 'r' 'w' 'a' - 控制后续操作(是读还是写)
'r' - 只读
'w' - 只写 - 覆盖 = 会清空原文件内容
'a' - 只写 - 追加 = 会保留原文件内容
第二组: 't' 'b' - 控制操作数据的类型
't' - 读操作返回的数据和写操作写入的数据是字符串(str)
'b' - 读操作返回的数据和写操作写入的数据是二进制(bytes)
第一组必须选一个,第二组可以不选,不选的时候默认是t
注意: 1. 二进制文件打开的时候必须带b
2.
c.encoding - 文本文件的编码方式(需要保证写入数据采用的什么方式进行编码,读数据的时候就需要用什么方式解码)
一般采用utf-8,但是很多windows文本默认编码方式是gbk
注意:只有在以t的方式打开文本文件的时候才需要考虑给encoding赋值
"""
# 绝对路径
# open(r'E:\python_2103\2021-5-11-函数作业.md')
# 相对路径 - 当前目录下文件夹(文件)
# open(r'./合同.txt')
# open('合同.txt')
# open('./res/a.txt')
# ====================r是只读==================
# f = open('./合同.txt','r')
# f.read()
# f.write('abc') # io.UnsupportedOperation: not writable
# =============a是只写,并且保留原文件内容========
# f = open('./合同.txt','a')
# f.write('abc')
# f.read() # io.UnsupportedOperation: not readable
# =============w是只写,并且会清空原文件内容=====
# f = open('./合同.txt','w')
# f.write('abc')
# f.read() # io.UnsupportedOperation: not readable
# =============t,操作数据是字符串==========
# f = open('./合同.txt','rt')
# content = f.read()
# print(type(content)) # <class 'str'>
# =============b,操作数据是二进制===========
# f = open('./合同.txt','rb')
# content = f.read()
# print(type(content)) # <class 'bytes'>
- 关闭文件
文件对象.close()
f.close()
-
操作文件
-
读操作
- 文件对象.read() - 从读写位置开始,读到文件结束.(读写位置默认在文件开头)
- 文件对象.readline() - 从读写位置开始,读到一行结束
-
写操作
- 文件对象.write(数据) - 将数据写入指定文件中
-
本文介绍了Python中的hashlib模块,包括MD5和SHA系列的哈希加密算法,强调了其不可逆性和固定长度摘要的特点。同时,详细阐述了文件操作的基本流程,如打开、读写和关闭文件,以及不同模式下的文件操作行为,强调了数据持久化的重要性。
4044

被折叠的 条评论
为什么被折叠?



