day14-文件操作

本文概述了Python中hashlib模块的使用,包括MD5和SHA算法的摘要生成,数据的加密特性以及如何通过文件操作实现数据持久化。重点介绍了文件打开、读写和保存数据的方法,以及如何使用`hexdigest`函数和文件I/O操作来持久化程序计数。
摘要由CSDN通过智能技术生成

总结

1. hashlib的使用
  • hash摘要(加密)的算法主要有两类: md5和sha-X

  • hash加密的特点

    • hash算法生成的摘要不可逆(不能通过密文来获取原文)
    • 只有相同的数据通过相同的算法得到的摘要才是一样的
    • 不管原数据多大,产生的摘要的大小(长度)一致
  • 生成hash摘要

    • 通过算法创建hash对象:hashlib.算法名
    • 算法名:md5, shaXXX
    hash = hashlib.md5()
    
    • 添加加密数据

      hash对象.update(数据)(二进制数据)

      注意: 数据必须时二进制数据,类型是bytes

    • 补充: 二进制和字符串之间的相互转换

    """
    字符串转二进制
    方法一:
    bytes(字符串, encoding='utf-8)
    方法二:
    字符串.encode()
    
    二进制转字符串
    方法一:
    str(二进制, encoding='utf-8')
    方法二:
    二进制.decode()
    """
    hash.update('123456'.encode())
    
    • 获取摘要
    result = hash.hexdigest()
    print(result)  # e10adc3949ba59abbe56e057f20f883e
    
2. 文件操作
  • 数据持久化

    """
    程序中保存的数据默认都是保存在运行内存中的,在程序运行结束的时候都会被释放
    如果希望这次运行程序产生的数据在下一次程序运行的时候还能用,就需要将数据保存到硬盘(磁盘)中
    
    将数据保存到硬盘(磁盘)的过程就是数据持久化的过程
    硬盘保存数据的基本单元是文件,所以如果要将数据保存到硬盘中,只需要将数据保存在文件中
    
    程序中数据持久化的常用文件类型:
    数据库文件(.db, .splite等), plist文件(.plist), json文件, 
    txt, 二进制文件(图片,视频,音频,exe可执行文件)
    """
    
  • 文件操作 - 操作文件的内容

    """
    文件操作的基本流程:打开文件 -> 操作文件(读, 写) -> 关闭文件
    """
    
    • 打开文件
    """
    open(file, mode='r', *, encoding=None) - 以指定方式打开指定文件,返回一个文件对象
    
    file  -  需要打开的文件在计算机中的位置信息(文件路径), 字符串
             文件路径分为绝对路径和相对路径
             绝对路径:文件在计算机中的全路径(一般从盘开始写)
             相对路径:.  -  表示当前目录(当前代码文件所在的文件夹)
                     ..  -  表示当前目录的上层目录
    
    
    mode  -  文件打开方式,决定打开文件后后续能对文件进行的操作以及操作数据的类型
             第一组: 'r', 'w', 'a'  -  控制后续操作(读还是写)
             'r'  -  只读
             'w'  -  只写:打开会清空原文件内容
             'a'  -  只写:打开会保留源文件内容
             
             第二组: 't', 'b'  -  控制操作数据的类型
             't'  -  读操作返回的数据和写操作写入的数据是字符串(str)
             'b'  -  读操作返回的数据和写操作写入的数据是二进制(bytes)
             第一组必须选一个, 第二组可以不选,不选的时候默认的是't'(txt文本)
             注意:1.二进制文件打开的时候必须带b
             
    encoding  -  文本文件的编码方式(需要保证写入数据采用的什么方式编码,读数据的时候就需要对应的方式解码)
                 一般采用utf-8,但是很多windows文本默认编码方式是gbk
                 注意:只有在以t的方式打开文本文件的时候才需要考虑给encoding					 赋值
     """
    
    • 关闭文件
    """
    文件对象.close()
    """
    
    • 操作
    """
    读操作
    文件对象.read()  -  从读写位置开始,读到文件结束(读写位置默认在文件开头)
    文件对象.readline()  -  从读写位置开始,读到一行结束
    
    
    写操作
    文件对象.write(数据)  -  将数据写入指定文件中
    """
    
3. 数据持久化
  • 怎么做到数据持久化

    """
    1)用一个文件来保存需要持久化的数据
    2)程序中需要这个数据的时候从文件中读取这个数据
    3)如果数据发生改变,需要把最新的数据再写入文件中
    """
    # 写一个程序打印程序执行的次数(自己创建一个文本count.txt)
    f = open('count.txt', encoding='utf-8')
    count = int(f.read())
    count += 1
    print(count)
    f = open('count.txt', 'w', encoding='utf-8')
    f.write(str(count))
    
  • eval函数

    result = eval('100')
    print(result, type(result))  # 100 <class 'int'>
    
    result = eval('12.5')
    print(result, type(result))  # 12.5 <class 'float'>
    
    result = eval('[10, 20, 30]')
    print(result, type(result), result[-1])  # [10, 20, 30] <class 'list'> 30
    
    result = eval("""
    {
        'name': '小明',
        'age': 18,
        'scores': [90, 88, 76, 99]
    }
    """)
    print(result, type(result))  # {'name': '小明', 'age': 18, 'scores': [90, 88, 76, 99]} <class 'dict'>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值