• 有关<Python>的文件操作(上课笔记)


    🔥系列专栏:【python学习笔记】


    1️⃣前言

    今天的笔记内容为:

    • Python的文件操作

    众所周知,多数编程语言都能够进行文件操作,Python也不例外。

    我们知道,无论什么类型的文件,在内存或磁盘里都是以二进制编码存储的

    文件一般可以分为两种:

    • 文本文件(基于字符编码,如Ascii编码,Unicode编码等)
    • 二进制文件(基于值编码,如声音、图像等文件)

    文件的基本操作为:

    1. 打开文件
    2. 操作文件
    3. 关闭文件

    具体看下文笔记:


    2️⃣打开文件

    Python中,我们使用open()函数来打开一个文件,其会并返回一个文件对象。

    ✨open()函数

    基本语法

    • open(file, mode, buffering)

    参数解释

    • file:必填项,表示要打开文件的路径。
    • mode:可选项,表示打开文件的访问方式。
    • buffering:可选项,表示表示文件读写时是否需要缓冲。

    返回类型

    • file对象

    ✨mode参数

    modeopen()函数里的参数,是一个字符串,其表示对文件的访问方式。

    具体如下:

    🌳----‘r’

    • r: 以只读的方式访问文件(这是open()函数的默认文件打开方式);
    • rb:以二进制模式打开文件并且只读;
    • r+:打开一个文件并用于读写;
    • rb+:以二进制模式打开文件并且用于读写 .

    🌳----‘w’

    • w写入模式;
    • wb:以二进制格式打开文件并用于写入;
    • w+:读写模式;
    • wb+:以二进制格式打开文件并用于读写。

    注意点:

    1. 如果用w模式打开文件,则表示要编写文件;
    2. 但需要注意,系统会先判断要打开的文件是否存在;
    3. 如果并不存在,则创建新文件并编写
    4. 如果已经存在,则删除原有内容并从头编。

    🌳----‘a’

    • a更新文件,即追加内容(如果文件不存在则会创建新文件并用于写入
    • ab以二进制格式打开文件并用于追加内容;(如果文件不存在则会创建新文件并用于写入
    • a+读写模式,可追加内容;(如果文件不存在则会创建新文件并用于读写
    • ab+以二进制格式打开文件并用于追加内容;(如果文件不存在则会创建新文件并用于读写

    ✨mode参数小结

    我们提供一个参数给open()函数,其会返回一个文件对象,并且是只读的文件对象(默认的)。

    如果需要将数据写入文件中,则必须通过mode参数来提供文件的访问方式。比如'r'表示只读模式,这是mode参数的默认值,'w'模式可以往文件中写入数据,需要注意的是,通过'w'模式打开的文件,其文件的原有内容会被删除掉(即数据的覆盖)。'a'模式可以往文件的末尾追加数据。还有一点,'+'可以和以上三种模式配合使用,表示可以同时读和写。

    注意,'w+''r+'区别:

    1. 打开文件后,'w+'模式下的文件原始数据会被删除掉(或者说被覆盖了);而'r+'模式和'a+'模式则不会删除文件原有数据。
    2. 如果要打开的文件不存在,'r+'模式打开则会产生异常。而'w+'模式和'a+'模式打开都是新建一个文本文件。

    最后一点,用'b'模式打开的一般为二进制文件,在Python中,默认打开的是文本文件。如果需要处理二进制文件,则需要提供'b'mode参数。比如'rb'用于读取二进制文件。

    ✨buffering参数

    buffering参数可控制文件读写时是否需要缓冲。

    • 该参数是可选项,如果不提供参数,则其值默认为1

    • 若将buffering参数取为0,则无缓冲。即直接将数据写入磁盘文件

    • 若将buffering参数取为1,则表示有行缓冲,即碰到换行就会将数据写入磁盘中

    • 如果将buffering参数取大于1的数,则该数表示所取缓存区中的字节数;

    • 如果将buffering参数设置为负数,则表示使用默认缓存区的大小。

    • 注意,当buffering参数的值取大于1负数时,缓冲区不满时,数据是不会写入磁盘的,直到缓冲区满了或者使用flush()方法或close()方法将缓冲区的数据强制写入磁盘内。

    ✨代码示例

    1. 示例一

    如果在D盘根目录下有一个文件为'test.txt',那么我们可以使用下列语句来打开这个文件:

    >>>file = open(r'd:\test.txt')
    
    • 1

    但是,如果D盘下并没有该文件,则会报错。

    如下所示:

    >>>file = open(r'd:\test.txt')
    Traceback (most recent call last):
      File "<pyshell#0>", line 1, in <module>
        f = open(r'd:\test.txt')
    FileNotFoundError: [Errno 2] No such file or directory: 'd:\\test.txt'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 示例二

    我们使用语句来打开一个文件,并以'w'模式(即写入模式)打开,那么即使该文件不存在,系统也不会报错,而是会创建一个新的文件

    >>> file = open('d://test.txt','w')
    
    • 1

    3️⃣操作文件

    操作文件一般分为:

    • 读取文件
    • 写入文件

    🟪读取文件

    open()方法在'r+','r+','w+','a+'等模式打开文件后,可以放回一个文本文件对象,我们可以对文件进行读取操作。

    具体方法有:

    • read(n)读取文件中指定n长度的字符,若不提供n,则读取文件中的所有字符。
    • readline(n)逐行读取字符,读取这一行中的n个字符;如果不提供n,则默认读取一行。
    • readlines()读取文件中的所有行,并将这些行组成一个列表并返回;

    📙示例

    假设我在D盘的根目录下有一个文件:'python_work.txt',如下所示:


    里面的内容是:


    那么现在,我们用Python来实现对文本文件的读取。

    • read()方法
    >>>file = open(r'd:\python_work.txt')
    >>>file.read(6)
    'Hello '
    >>>file.read(6)
    'world!'
    >>>file.read()
    "\nI have a dream.\nOne day I'll make it happen.\n"
    >>>file.read()
    ''
    >>>file.close() # 关闭文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • readline()方法
    >>>file = open(r'd:\python_work.txt')
    >>>file.readline(6)
    'Hello '
    >>>file.readline()
    'world!\n'
    >>>file.readline()
    'I have a dream.\n'
    >>>file.readline()
    "One day I'll make it happen.\n"
    >>>file.readline()
    ''
    >>>file.close() # 关闭文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • readlines()方法
    >>>file = open(r'd:\python_work.txt')
    >>>file.readlines()
    ['Hello world!\n', 'I have a dream.\n', "One day I'll make it happen.\n"]
    >>>file.readlines()
    []
    >>>file.close() # 关闭文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    🟫写入文件

    open()方法在'r+','w','w+','a+'等模式打开文件后,可以放回一个文本文件对象,我们可以对文件进行写入操作。

    具体方法有:

    • write(str):该方法用于向文件中写入指定字符串,即将字符串str写入文本中;
    • writelines(str)str为字符串列表,该方法将列表中的每一个元素作为一行,逐行写入文本中。

    📘示例

    比如说在D盘的根目录下的有一个文件如下所示:

    此时我们对文件进行写入操作:

    • write()方法
    >>>file = open(r'd:\python_work.txt', 'w')
    >>>file.write('Hello python!') #write()方法调用后会返回要写入字符串的长度
    13
    >>>file.close() # 关闭文件
    
    • 1
    • 2
    • 3
    • 4

    文件操作完后,效果如下所示:

    由上可以证明,用w+模式打开的文件,其原有数据会被清空(或者说覆盖)。

    >>>file = open(r'd:\python_work.txt', 'w')
    >>>l = ['To see a world in a grain of sand,\n',
            'And a heaven in a wild flower,\n',
            'Hold infinity in the palm of your hand,\n',
            'And eternity in an hour.']
    >>>file.writelines( l )
    >>>file.close() # 关闭文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    文件操作完后,效果如下所示:


    4️⃣关闭文件

    注意,对文件进行读写操作后,必须使用close()方法来关闭文件,把缓冲区的数据写入磁盘内,进而释放内存资源。

    也就是说,close() 方法用于关闭一个已打开的文件。并且无参数,也无返回值,其允许被调用多次。

    需要注意的是,关闭后的文件无法再进行读写操作, 否则会触发ValueError错误。


    5️⃣写在最后

    好了,今天的笔记就到这里,欢迎大家到评论区一起讨论!

  • 相关阅读:
    如何在忘记手机密码或图案时重置 Android 手机?
    突破大O(N的平方)的排序
    png转jpg格式图片怎么弄?这几种格式转换方法要知道
    高精度RC振荡器的设计
    GBase 8c 数据库审计概述(二)
    字符串查询--Python
    基于springboot实现乒乓球预约管理系统项目【项目源码】计算机毕业设计
    Python解题 - CSDN周赛第11期 - 圆桌请客(脑筋急转弯)
    大数据课程K22——Spark的SparkSQL的API调用
    OpenFeign服务调用与负载均衡
  • 原文地址:https://blog.csdn.net/m0_62999278/article/details/124923132