Python内置了一个open()方法,用于对文件进行读写操作。使用open()方法操作文件可以分三步走,一是打开文件,二是操作文件,三是关闭文件。

open()方法的返回值是一个file对象,可以将它赋值给一个变量。其基本语法格式为:

f = open(filename,mode)

PS:Python中,所有具有read和write方法的对象,都可以归纳为file类型。而所有的file类型对象都可以使用open方法打开,close方法结束和被with上下文管理器管理。这是Python的设计哲学之一。

filename:一个包含了你要访问的文件名称的字符串值,通常是一个文件路径。

mode:打开文件的模式,有很多种,默认是只读方式r。

一个简单的例子:

打开一个文件

f = open("/tmp/foo.txt","w")
f.write("Python very nice")

关闭打开的文件

f.close()

####打开模式:

r 只读 默认模式,如果文件不存在就报错,存在就正常读取。

w 只写 若文件不存在,新建文件然后写入;如果存在,先清空内容再写入

a 追加 若文件不存在,新建文件,然后写入;如果存在,在文件最后追加写入。

x 新建 如果文件存在则报错,否则就新建文件,然后写入内容

b 二进制模式

  • 读写模式

一 b模式:

二进制模式,通常用来读取图片视频等二进制文件。注意,它在读写的时候是以bytes类型读写的,因此获得的是一个bytes对象而不是字符串。在这个读写过程中,需要自己指定编码格式。在使用带b的模式时一定要注意传入的数据类型,确保为bytes类型。

s = ‘this is test’
b = bytes(s,encoding=“utf—8”)
f = open(‘test.txt’,'w')
f.write(s)

这样没问题

s = 'this is test2'
b = bytes(s,encoding=“utf—8”)
f = open(‘test2.txt’,'wb') # 注意多个b
f.write(s)

这样会报错 因为它需要一个bytes类型数据,你却给了个字符串

二 + 模式:

对于w+模式,在读写之前都会清空文件的内容,建议不要使用

对于a+模式,永远只能在文件的末尾写入,有局限性,建议不要使用

对于r+模式,也就是读写模式,配合seek()和tell()方法,可以实现更多操作