python文件打开模式rb表示以只读模式打开文件,day8.python文件操作

本文详细介绍了Python中open函数的使用方法,包括不同模式(r, w, a, rb, wb, ab)的应用,以及如何进行文本和二进制文件的读写操作。重点讲解了只读、写入、追加、读写模式下的注意事项和实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打开和关闭文件

open函数

用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。

file = open(file_name [, access_mode][, buffering])

不同模式打开文件的列表:

t: 文本模式(默认)

r: 以只读模式打开文件,指针将放在文件开头

r+: 打开一个文件用来读写,指针在开头

rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。

rb+   以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。

w:   打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

w+:   打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb:   以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

wb+: 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

a:   打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+:   打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab:   以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab+: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

1.只读操作:(r,rb)

对于r:需要注意encoding表示编码集。根据文件的实际保存编码进行获取数据,对于我们而言,更多的是utf-8

r = open(‘文件测试‘,mode = ‘r‘,encoding=‘utf-8‘)

content=f.read()print(content)

f.close()

对于rb: 读取出来的数据是Bytes类型,在rb模式下,不能选择encoding字符集。在读取非文本文件的时候。比如读取MP3、图像、视频等信息的时候就需要用到rb。因为这种数据是没办法直接显示出来的,在后面我们文件上传下载的时候还会用到。还有我们看的直播。实际上都是这种数据。

rb = open(‘文件测试‘,mode=‘rb‘)

content=rb.read()print(content )

rb.close()

b‘\xe8\xa9\xb9\xe5\xa7\x86\xe6\x96\xaf\xef\xbc\x8c\xe5\x93\x88\xe7\x99\xbb\xef\xbc\x8c\xe4\xbf\x9d\xe7\xbd\x97‘

2.写模式 (w,wb)

若文件不存在则创建文件,若存在则会覆盖文件,慎用。

w = open(‘文件操作‘,mode=‘w‘,encoding=‘utf-8‘)

w.write(‘测试一下‘)

w.close()

写模式下读文件

w = open(‘文件操作‘,mode=‘w‘,encoding=‘utf-8‘)

w.write(‘测试一下‘)

count=w.read()print(count)

w.close()

io.UnsupportedOperation: not readable

二进制写:wb模式下以二进制打开一个文件用于写,不需要指定编码方式。在写入文件的时候需要指定编码方式,否则会报错

w = open(‘文件操作‘,mode=‘wb‘)

w.write(‘测试一下下‘.encode(‘utf-8‘))

w.close()

3.追加 (a,ab)

追加模式下,文件会追加在文件末尾。

a = open(‘文件测试‘,mode=‘a‘,encoding=‘utf-8‘)

a.write(‘hello,world‘)

a.close()#ab二进制追加

ab = open(‘文件测试‘,mode=‘ab‘)

ab.write(‘梦三国‘.encode(‘utf-8‘))

ab.close()

4.读写模式(r+,r+b)

对于读写模式,必须是先读。因为默认光标是在开头的,准备读取的。当读完了之后再进行写入,我们以后使用频率最高的模式就是r+

r = open(‘文件操作‘,mode=‘r+‘,encoding=‘utf-8‘)

count=r.read()print(count)

r.write(‘NBA‘)

r.flush()#刷新缓冲区

r.close()

错误操作:

若我们先写后读的话,写进去的内容会将文件里面的前N个字符占用取代

r = open(‘文件操作‘,mode=‘r+‘,encoding=‘utf-8‘)

r.write(‘NBA‘)

count=r.read()print(count)

r.close()

NBAlo,world

5.写读模式(w+,w+b)

写读模式会将文件内容清空,再读取。但是读取到的内容为空,说明指针到了最后

r = open(‘文件操作‘,mode=‘w+‘,encoding=‘utf-8‘)

r.write(‘这是一个安静的晚上‘)print(r.read())

r.close()

#指针验证

r = open(‘文件操作‘,mode=‘w+‘,encoding=‘utf-8‘)

r.write(‘这是一个安静的晚上‘)

r.seek(0)

print(r.read())

r.close()

这是一个安静的晚上

6.追加读(a+)

f = open(‘log‘,mode=‘a+‘,encoding=‘utf-8‘)

f.write(‘佳琪‘)

f.seek(0)print(f.read())

f.close()

7.补充内容

1.read (n)

在 r 模式下,读取前3个字符,无论中文英文都一样。如果再次读取,那么会在当前位置继续去读而不是从头读,如果使用的是rb模式,则读取出来的是n个字节。

file = open(‘文件操作‘,mode=‘r‘,encoding=‘utf-8‘)

count= file.read(3)print(count)

file.close()

abc(爱死你)

file = open(‘文件操作‘,mode=‘rb‘ )

count = file.read(3)

print(count)

file.close()

b‘\xe7\x88\xb1‘

file = open(‘文件操作‘,mode=‘r‘ ,encoding=‘utf-8‘ )

count1 = file.read(3)

count2 = file.read(3)

print(count1)

print(count2)

file.close()

爱是你

abc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值