• 【python】(十二)python内置库——文件处理



    1. IO操作

    在这里插入图片描述

    • IO:在计算机里面指流的输入和输出。这里的输入和输出是相对于电脑内存来说的。
    • 输入:输入是指数据从磁盘或者网络流入内存的一个过程。
    • 输出:输出是指数据从内存流出外部网络或者磁盘的一个过程。

    1.1 文件操作步骤

    1. 打开文件
    2. 操作文件:读/写/追加内容
    3. 关闭文件(读写完成要及时关闭文件,不关闭会对内存有很大的消耗)

    1.2 文件操作API

    1.2.1 打开方法

    1.2.1.1 open()
    def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
    #必填参数:file
    #重要参数: mode、encoding
    
    • 1
    • 2
    • 3
    1. file必填参数,要打开的文件的路径,相对路径、绝对路径都可。

    2. mode重要参数,读取模式,默认值:rt。通过读取模式来定义对文件读取方式。

    3. buffering:缓冲区大小。

      • 0关闭缓冲区,只有在二进制模式下才可用;
      • 1:遇到换行符后则写磁盘(只有在文本模式下才生效);
      • 大于1:设置固定大小的缓冲区;
      • 未指定buffering参数值的话:
        • “交互式”文本文件使用行缓冲。其他文件模式参考二进制的方式。
        • 二进制文件,缓冲区大小固定。缓冲区的大小根据基础设备的大小来设定。多数系统中使用的是4096个字节或者8912字节。

      数据不是实时去写入磁盘的,一般先放置在缓冲区中,等到缓冲区满后再集中写入磁盘中。

    4. encoding:重要参数,操作文件时的编码格式。如果文件中存在中文,就需要设置一个编码格式。

    5. errors:遇到编码或解码错误的时候,是忽略还是抛出异常。

    6. newline:换行符,用于控制换行符。指定换行符是\r、\n还是\r\n。

    7. closefd:文件描述符。使用很少,了解即可。

    注意:此处展示的python3中的方法,python2与python3有不同。

    1.2.1.2 文件读写模式
    文件打开模式描述
    r以只读模式打开文件,并将文件指针指向文件头;如果文件不存在会报错。
    w
    以只写模式打开文件,并将文件指针指向文件头;如果文件存在则将其内容清空,如果文件不存在则创建。
    a以只追加可写模式打开文件夹,并将文件指针指向文件胃部;如果文件不存在则创建
    r+在r的基础上增加可写功能
    w+在w的基础上增加可读工能
    a+
    在a的基础上增加可读功能
    b读写二进制文件(默认t,表示文本),需要与上面几种模式搭配使用,如:ab,wb,ab+(POSIX系统,包括Linux都会忽略该字符)

    1.2.2 读操作

    方法描述
    read()一次读取文件所有内容,返回一个str
    read(size)每次最多读取指定长度的内容,返回一个str;
    Python2中size指定的是字节长度,在python3中size指定的是字符长度
    readlines()一次杜宇文件所有内容,按行返回一个list
    readline()每次只读取一行内容
    1.2.2.1 read()
    #第一步:(只读模式)打开文件
    f=open('data.txt','r',encoding='UTF-8')
    
    #第二步:读取文件中内容
    print(f.read())
    
    #第三步:关闭文件
    f.close()
    
    """
    打印结果:
    Hello Python!
    Hello Stanger!
    Hello!
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    1.2.2.2 read(size)
    #第一步:(只读模式)打开文件
    f=open('data.txt','r',encoding='UTF-8')
    
    #第二步:读取文件
    print(f.read(7))
    
    #第三步:关闭文件
    f.close()
    
    """
    打印结果:
    Hello P
    """
    
    #注意:换行、空格也会占字符
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    1.2.2.3 readlines()
    #第一步:(只读模式)打开文件
    f=open('data.txt','r',encoding='UTF-8')
    
    #第二步:读取文件
    print(f.readlines())
    
    #第三步:关闭文件
    f.close()
    
    """
    打印结果:
    ['Hello Python!\n', 'Hello Stanger!\n', 'Hello!']
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    #示例1:
    #第一步:(只读模式)打开文件
    f=open('data.txt','r',encoding='UTF-8')
    
    #第二步:读取文件
    print(f.read())
    print(f.readlines())
    
    #第三步:关闭文件
    f.close()
    
    """
    打印结果:
    Hello Python!
    Hello Stanger!
    Hello!
    []
    """
    
    #注意:readlines返回的是空列表,是因为,read()操作的时候已经将文件中的内容读取完,此时游标移动到最后一行,这时在readline的时候读取到的是空的。
    #示例2:
    #第一步:(只读模式)打开文件
    f=open('data.txt','r',encoding='UTF-8')
    
    #第二步:读取文件
    print(f.read())
    
    #设置游标位置
    f.seek(0)
    print(f.readlines())
    
    #第三步:关闭文件
    f.close()
    
    """
    打印结果:
    Hello Python!
    Hello Stanger!
    Hello!
    ['Hello Python!\n', 'Hello Stanger!\n', 'Hello!']
    """
    # 设置游标位置后,readlines()返回的不是空列表
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    1.2.2.4 readline()
    #第一步:(只读模式)打开文件
    f=open('data.txt','r',encoding='UTF-8')
    
    #第二步:按行读取文件
    print(f.readline())
    print(f.readline())
    
    #第三步:关闭文件
    f.close()
    
    """
    打印结果:
    Hello Python!
    
    Hello Stanger!
    """
    #注意:readline()会有一个换行,print会有一个换行,因此打印读取内容后,会出现两个换行。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    1.3 忘记关闭文件的危害

    • 打开文件达到一定数量,将会导致打开失败。
    • 占用内存空间,非常浪费资源。
    • 会导致系统自动回收资源,而丢失数据。

    1.4 With用法

    with open('data.txt','r',encoding='UTF-8') as f:
        print(f.read())
    print(f.close())
    
    
    """
    打印结果:
    Hello Python!
    Hello Stanger!
    Hello!
    None
    """
    
    #使用with用法,文件用完后自动关闭。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    1.5 总结

    • 使用with方法,会自动完成文件关闭操作。
    • 通过python封装的API,可以实现文件的读、写、追加操作
    • 文件打开要使用utf-8的编码格式(以免中文出现乱码)
  • 相关阅读:
    vue 如何调用子组件内的方法
    Linux上的中文输入法安装(Ubuntu + Kali五笔拼音)
    python PyQt6 常用操作以及常见问题解决
    爱了爱了,Alibaba顶级MySQL调优手册到手,加薪妥了
    Spacedrive:开源跨平台文件管理 | 开源日报 No.57
    [附源码]计算机毕业设计疫情防控平台Springboot程序
    热乎的腾讯 C++ 后台开发面试笔记
    怎么学习前端开发?求推荐学习路线?
    7-69 猴子选大王
    傻瓜式Java操作MySQL数据库备份
  • 原文地址:https://blog.csdn.net/gjj920318/article/details/126853532