2021-5-15文件操作

本文介绍了Python中的hashlib模块,包括MD5和SHA系列的哈希加密算法,强调了其不可逆性和固定长度摘要的特点。同时,详细阐述了文件操作的基本流程,如打开、读写和关闭文件,以及不同模式下的文件操作行为,强调了数据持久化的重要性。

2021-5-15文件操作

1.hashlib的使用

import hashlib

hash摘要(加密)的算法主要分两类:MD5 和sha-X系列

  1. hash 加密的特点
  • hash算法生成的摘要不可逆.(不能通过密文来获取原文)
  • 只有相同的数据通过相同算法得到的摘要才是一致的
  • 不管元数据多大产生的摘要的大小(长度)一致
  1. 生成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. 文件操作

  1. 数据持久化

程序中保存的数据默认都是保存在运行内存中的,在程序运行结束的时候都会被释放.

如果希望这次运行程序产生的数据在下一次运行程序的时候还能用,就需要将数据保存到硬盘中(磁盘)

将数据保存懂啊硬盘的过程就是数据持久化的过程.

硬盘保存数据的基本单元是文件,所以如果要将数据保存到硬盘中,只需要将数据保存在文件中.

程序中数据持久化的常用文件类型:数据库文件(.db .sqlite等)plist文件 json文件 txt文件 二进制文件(图片,视频,音频,exe可执行文件)

  1. 文件操作 - 操作文件的内容

文件操作基本流程: 打开文件 -> 操作文件(读,写) -> 关闭文件

  • 打开文件
"""
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(数据) - 将数据写入指定文件中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值