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()方法,可以实现更多操作