• Python文件及目录操作(基本文件操作篇)


    在这里插入图片描述

    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

    学习日记

    目录

    学习日记

    一、前言

    二、基本文件操作

    1、创建和打开文件 

    2、关闭文件 

    3、打开文件时使用with语句

    4、写入文件内容

    5、读取文件

    读取指定字符

    部分读取

    读取一行

    读取全部行

    ​ Python文件及目录操作文章总览


    一、前言

            在变量、序列和对象中储存的数据是暂时的,程序结束后就会丢失。为了能够永久的储存程序中的数据,需要将程序中的数据保存到磁盘文件中。Python提供内置文件的对象,还提供了对文件和目录进行操作的内置模块。通过这些技术可以很方便的将数据保存到文件(文本文件等),以达到永久储存数据的目的。

     

     本章节将分为“基本文件操作”、“目录操作”、“高级文件操作”三个模块讲解。

    二、基本文件操作

            Python中,内置文件(file)对象。在使用文件对象时,首先需要通过内置的open()方法创建一个文件对象,然后通过该对象提供的方法进行一些基本文件操作。例如write()方法写入、close()方法关闭文件等。

    1、创建和打开文件 

    创建或打开指定文件并创建文件对象可以使用open()方法,基本语法如下。

    file = open(filename[,mode[,buffering]])

    file :被创建的文本对象

    filename:要创建或打开文件的名称,需要使用单引号或双引号括起来。如果要打开文件和当前文件在同一目录下,那么直接写文件名即可,否则则需要指定完整路径

    mode:可选参数,用于指定文件的打开模式。参数表如下。

    mode参数的参数值 

    r

    以只读模式打开文件。文件的指针将会放在文件的开头

    rb

    以二进制格式打开文件,并且采用只读模式。文件的指针将会放在文件的开头。一般用于非文本文件,如图片、声音等

    r+

    打开文件后,可以读取文件内容,也可以写入新的内容覆盖原有内容(从文件开头进行覆盖)

    rb+

    以二进制格式打开文件,并且采用读写模式。文件的指针将会放在文件的开头。一般用于非文本文件,如图片、声音等

    w

    以只写模式打开文件

    wb

    以二进制格式打开文件,并且采用只写模式。一般用于非文本文件,如图片、声音等

    w+

    打开文件后,先清空原有内容,使其变为一个空的文件,对这个空文件有读写权限

    wb+

    以二进制格式打开文件,并且采用读写模式。一般用于非文本文件,如图片、声音等

    a

    以追加模式打开一个文件。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入

    ab

    以二进制格式打开文件,并且采用追加模式。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入

    a+

    以读写模式打开文件。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于读写

    ab+

    以二进制格式打开文件,并且采用追加模式。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于读写

    buffering:可选参数,用于指定读写文件的缓冲模式,如果值为0,则表示不缓存;如果值为1,则表示缓存;如果值大于1,则表示缓冲区的大小,默认为缓冲模式。

            创建并打开记录蚂蚁庄园动态的文件。

    1. print("\n","="*10,"蚂蚁庄园动态","="*10)
    2. file = open('message.txt','w') # 创建或打开保存蚂蚁庄园动态信息的文件
    3. print("\n 即将显示……\n")
    4. # 以下为关闭文件对象的代码
    5. # file.close() # 关闭文件对象

    2、关闭文件 

            打开文件后要及时关闭,以免造成对文件不必要的破坏,关闭文件时可以使用文件对象的close()方法实现。

    file.close()
    

    file :打开的文件对象

    #close()方法先刷新缓冲区中还没有写入的信息,然后关闭文件,这样可以将没有写入文件中的内容写入文件中。在关闭文件后,就不能进行写入操作了。

    3、打开文件时使用with语句

            打开文件后要及时关闭,如果忘记关闭,可能带来意想不到的问题。另外,如果在文件打开时出现了异常,将导致文件不能关闭。为了更好避免这些问题,可以使用with语句,从而在文件处理时,无论是否出现异常都能保证with语句执行完毕后关闭已打开的文件。

    1. with expression as target:
    2. with-body

    expression:    用于指定一个表达式,可以是打开文件的open()函数。

    target:用于指定一个变量,并且将expression的结果保存到该变量中。

    with-body:用于指定with语句体,其中可以是执行with语句后相关的一些操作语句。如果不想执行任何语句,可以直接使用pass语句代替。

    上面的例子可以改写为

    1. print("\n","="*10,"蚂蚁庄园动态","="*10)
    2. with open('message.txt','w')as file: # 创建或打开保存蚂蚁庄园动态信息的文件
    3. pass
    4. print("\n 即将显示……\n")

    4、写入文件内容

    使用write()方法

    file.write(string)
    

    file:打开的文件对象。

    string:要写入的字符串。

            向蚂蚁庄园的动态文件写入一条信息。

    1. print("\n","="*10,"蚂蚁庄园动态","="*10)
    2. file = open('message.txt','w') # 创建或打开保存蚂蚁庄园动态信息的文件
    3. # 写入一条动态信息
    4. file.write("你使用了1张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。\n")
    5. print("\n 写入了一条动态……\n")
    6. file.close() # 关闭文件对象

    在写入文件后一定要关闭文件,不然写入的内容不会被保存到文件中。

    5、读取文件

    读取指定字符

    file.read([size])

    r(只读)或者r+(读写)

    file:打开的文件对象。

    size:可选参数,用于指定要读取的字符个数,如果省略则一次性读取所有。

    部分读取

    想要读取部分内容,可以先使用文件对象的seek()方法将文件的指针移动到新位置,然后应用read(size)方法读取。seek()方法的基本语法如下

    file.seek(offset[,whence])

    file:已经打开的文件对象。

    offset:用于指定移动的字符个数,其具体位置与whence有关。

    whence:用于指定从什么地方开始计算。如果值为0,表示从头开始计算,值为1,表示从当前位置开始计算,值为2,表示从文件尾开始计算。

    PS:

            在使用seek()方法时,offset的值按一个汉字占两个字符来算,英文字符和数字按占一个字符来算的。

            在蚂蚁庄园的动态栏目中记录着庄园的新鲜事。现在想要显示庄园里的动态信息。

    1. print("\n","="*25,"蚂蚁庄园动态","="*25,"\n")
    2. with open('message.txt','r') as file: # 打开保存蚂蚁庄园动态信息的文件
    3. message = file.read() # 读取全部动态信息
    4. print(message) # 输出动态信息
    5. print("\n","="*29,"over","="*29,"\n")

    读取一行

    file.readline()

    方法同read()

    例 

            在蚂蚁庄园的动态栏目中记录着庄园里的新鲜事。现在想要显示庄园里的动态信息,请逐行显示蚂蚁庄园的动态。

    1. print("\n","="*25,"蚂蚁庄园动态","="*25,"\n")
    2. with open('message.txt','r') as file: # 打开保存蚂蚁庄园动态信息的文件
    3. number = 0 # 记录行号
    4. while True:
    5. number += 1
    6. line = file.readline()
    7. if line =='':
    8. break # 跳出循环
    9. print(number,line,end= "\n") # 输出一行内容
    10. print("\n","="*29,"over","="*29,"\n")

    读取全部行

    file.readlines()

    方法同上

    ​ Python文件及目录操作文章总览

    Python文件及目录操作(基本文件操作篇)

    Python文件及目录操作(目录操作篇)

    Python文件及目录操作(高级文件操作篇) 

  • 相关阅读:
    Algorithm基础算法学习
    离屏渲染 &FBO
    ORM基本操作
    棒球省队建设实施办法·棒球1号位
    Redis篇---第八篇
    数据结构-b树
    数据集MNIST手写体识别 pyqt5+Pytorch/TensorFlow
    利用游标给数据库所有表添加同一个字段
    用nginx-rtmp-win32-master及ffmpeg模拟rtmp视频流
    2024.4.23 关于 LoadRunner 性能测试工具详解 —— VUG
  • 原文地址:https://blog.csdn.net/m0_63794226/article/details/126418975