打开文件
f = open(文件名, 文件打开模式,文件编码)
- ‘w’:只写模式,它是只能写,而不能读的。如果用’w’模式打开一个不存在的文件,则会创建新的文件开始写入;如果用’w’模式打开一个已存在的文件,则会清空文件里内容数据,重新写入新的内容。
- ‘r’:只读模式,它是只能读,而不能写的。如果用’r’模式,文件必须得存在,若文件不存在,会报FileNotFoundError错误。
- ‘a’:追加模式,它是只能写,不能读的。如果用’a’模式写,文件不存在的话,会新建文件再写入数据;如果用’a’模式写,文件存在的话,会在文件内容的末尾写入内容,不会清空原来的内容
- ‘w+’:可读可写模式。文件不存在,则新建;存在的话,则清空文件重新写入。’w+’重要一点是会把原来的内容清空(请慎重使用)
- ‘r+’:可读可写模式。重要是文件必须存在,不存在的话,打开会报错,同时写的话,则文件开头写入内容。
- ‘a+’:可读可写模式。文件不存在则新建;存在的话,则文件末尾追加内容。
- ‘rb’:读取二进制文件
- ‘rw’:写入二进制文件
文件的操作方法
f=open('python.txt','w+',encoding='utf-8')#打开文件#python2 打开文件除了open()方法,还有一种file()方法:f = file('a.txt','r'),python3没有这个file()方法。f.writable()#判断文件是否可写f.readable()#判断文件是否可读f.write('天气真好!'+'\n')#写文件,写字符串到文件里f.writelines(['搏击'+'\n','打篮球'+'\n'])#写文件,写列表到文件里f.read()#读文件的所有内容,返回的是字符串f.readlines()#读文件所有的内容,返回的是列表f.readline()#读一行内容,返回的是字符串 f.tell()#返回文件的当前指针位置 f.truncate()#清空文件内容 f.seek(0)#移动文件指针的执行,传0是代表把文件指针指向文件开头 f.flush()#让write()后,f.flush()把内存里的数据立马写入到磁盘里,使得写完就生效;#而实际的write()写有缓存时间,无法立即写入 f.close()#关闭文件
读文件
文件操作方法read(),readlines()的读文件,会把所有数据加载到内存,当读入较大文件时,则内存会会不够,所以这两种方法既不安全而且效率不高。所以可以读一行,释放一行。
f = open('python.txt','r',encoding='utf-8')for line in f: #line是文件每行的内容 print(line)f.close()
修改文件
修改文件可以采用两种方法:1.读取文件所有内容,把原文件清空,重新写入新的内容 2.修改后的内容写入一个新的文件,再将新文件替换原文件。
#第一种方法,适用于文件小的情况。在不删除原文件的情况下,修改文件的内容。f = open('python.txt','r+',encoding='utf-8')res = f.read()new_res = res.replace('周五周六','周末')f.seek(0)f.truncate()f.write(new_res)f.close()
#第二种方法,无论文件大小都适合。新建文件,一行行的写入替换内容,再删除旧文件,最后新文件更名成原文件名。给人一种在原文件修改内容的假象。import osf = open('python.txt','r+',encoding='utf-8')f_n = open('ddd.txt','a+',encoding='utf-8')for line in f: new_line =line.replace('美女','帅哥') f_n.write(new_line)f.close()f_n.close()os.remove('python.txt') os.rename('ddd.txt','python.txt')
多文件操作
使用with方法,在文件不使用的时候,自动关闭该文件,而不需要自己写close()。当同时打开多个文件时,使之不会产生错误。
with open("file.txt","r",encoding='utf-8') as fr,\ open("file_new.txt","a+",encoding='utf-8') as fa:#虽然python编码规范要求每行代码不超过80个字符,但是为了方便阅读,可以加上"\",让代码换行。