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,则表示缓冲区的大小,默认为缓冲模式。

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

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

2、关闭文件 

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

file.close()

file :打开的文件对象

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

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

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

with expression as target:
    with-body

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

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

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

上面的例子可以改写为

print("\n","="*10,"蚂蚁庄园动态","="*10)

with open('message.txt','w')as file:            # 创建或打开保存蚂蚁庄园动态信息的文件
    pass

print("\n 即将显示……\n")

4、写入文件内容

使用write()方法

file.write(string)

file:打开的文件对象。

string:要写入的字符串。

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

print("\n","="*10,"蚂蚁庄园动态","="*10)
file = open('message.txt','w')   # 创建或打开保存蚂蚁庄园动态信息的文件
# 写入一条动态信息
file.write("你使用了1张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。\n")
print("\n 写入了一条动态……\n")
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的值按一个汉字占两个字符来算,英文字符和数字按占一个字符来算的。

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

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

读取一行

file.readline()

方法同read()

例 

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

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

读取全部行

file.readlines()

方法同上

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

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

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

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

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉蕤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值