Python 文件读写

文件读写操作一般步骤,打开文件(需要指定打开的文件路径,文件读写模式,和编码格式,默认编码是GBK),读写文件,关闭文件(在关闭文件的时候,就会自动保存到磁盘上面去了。在没有关闭文件之前,所有的写文件的内容暂时是存储在内存当中)

  1. Python 文件常用打开模式说明

读文件模式

打开模式模式说明适用场景
r以只读模式打开文件,文件指针将放在文件的开头普通的读取数据
r+以可读可写的模式打开文件,文件指针将会放在文件的开头普通的读取数据
rb以只读模式且是二进制格式打开一个文件,文件指针将会放在文件的开头适用于文件,图片,视频,音频等文件读取
rb+以读写的模式且是二进制格式打开一个文件,文件指针将会放在文件的开头适用于文件,图片,视频,音频等文件读取

写文件模式

打开模式模式说明
a以只写模式,打开一个文件用于追加内容,如果文件已存在,文件指针会被放在文件的末尾。如果文件不存在,则创建新文件进行写入
a+以读写模式,打开一个文件用于追加内容,如果文件已存在,文件指针会被放在文件的末尾。如果文件不存在,则创建新文件进行写入
w以只写模式,打开一个文件。如果该文件已经存在则会将其内容覆盖。如果文件不存在,则创建新文件
w+以读写模式,打开一个文件。如果该文件已经存在则会将其内容覆盖。如果文件不存在,则创建新文件
wb以只写模式且是二进制格式打开一个文件,如果该文件存在则会将其内容覆盖。如果文件不存在,则创建新文件
wb+以读写模式且是二进制格式打开一个文件,如果该文件存在则会将其内容覆盖。如果文件不存在,则创建新文件
ab以读写模式且是二进制格式打开一个文件,如果该文件存在则文件指针将放在文件内容末尾对内容进行追加。如果文件不存在,则创建新文件

注意:使用二进制格式进行读写的时候,要注意编码的问题,默认是GBK编码。以什么编码格式写进去数据,就要以什么编码格式来读取数据并进行解码操作。

  1. 写文件使用示例

以 w 模式打开一个文件,并写入。同时指定编码格式

f = open('./Test.txt', 'w', encoding='utf-8')
f.write('我喜欢学习python')
f.close()

以 wb 模式打开一个文件,并以二进制的格式进行写入,同时指定编码格式

f = open('./Test.txt', 'wb')
f.write('我喜欢学习python'.encode('utf-8'))
f.close()

  1. 读文件使用示例

以 r 模式打开一个文件,并读取文件的内容。

f=open('./Test.txt','r',encoding='utf-8')
print(f.read()) #读所有的数据
print(f.read(3)) # 每次只读3个字
print(f.readline()) #每次只读一行
print(f.readlines()) #读所有数据,并且返回一个列表
f.close()

以 rb 模式打开一个文件,并以二进制的格式进行读取,拿到数据后,进行二进制数据解码

f=open('./Test.txt','rb')
data=f.read()
print(data.decode('utf-8')) #进行解码,以什么编码格式写进去的数据就以什么编码格式进行解码
f.close()
  1. 使用 with上下文管理 进行文件读取

使用 with 语句,不管在处理文件过程中是否发生异常,with 语句都能保证执行完毕后,会自动释放打开的关联的文件对象。也就是不需要手动关闭文件

语法示例如下:

with open('./Test.txt','rb') as f:
    data=f.read()
    print(data.decode('utf-8'))
  1. 文件定位操作

文件定位,指的是获取当前文件指针读取到的位置,也就是光标位置

文件定位所使用到的函数如下:

  • tesll() 函数,返回文件指针当前所在的位置
  • truncate() 函数,对源文件进行截取操作。例如:truncate(3) 表示,保留当前源文件前3个字符,剩下的统统删除掉。
  • seek(offset,from) 函数,用来控件文件指针定位到其他位置进行操作。offset 表示偏移量单位字节,负数是往回偏移,正数是往前偏移。from 位置:0 表示文件开头,1表示当前位置,2表示文件末尾

使用 seek() 函数注意事项,如若进行往回偏移,那么必须要以二进制的读取格式进行文件读取,否则只能从文件开头计算相对位置(即只能往前偏移)。若强行往回偏移,则会引发异常。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小丫头呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值