5-21文件的操作
1、打开文件
文件的三种打开模式,如果open时不指定模式,则默认以读模式打开
w,写 但是不能读。注意用该方式打开文件后会先将文件中原来的内容清掉,再写入指定的内容。用该模式要慎重,因为一旦打开文件,内容将被清空开始重新写
w+ ,是写读模式
只要有w就会清空原来的文件内容
r,读 但是不能写,且文件必须存在
r+,是读写模式,
只要有r,文件就必须存在
a,追加,只能写不能读,且文件必须存在,在文件的末尾添加内容
a+,是读写模式,文件不存在打开时不会报错,且打开时不会清空原文件中的内容
例如以读模式打开一个当前目录下的文件,并将读到的内容打印出来
2、读取文件的方法 f.read() ,返回的是字符串,读取的是文件的全部内容
f = open('1.txt','r',encoding='utf-8')
print(f.read())
会输出文件的内容
f = open('1.txt','a',encoding='utf-8')
f.write('new new new')
print(f.read())
这样会报错,因为a追加模式只支持写不支持读
2、文件指针的位置
seek()括号中为指定文件指针要移动到哪儿的位置
因为用a+模式打开文件的时候,文件指针自动找到文件的末尾,所以用read()方法就不能读取文件的内容,所以需要指定文件指针的位置,即为开始读文件内容的位置
例如
f = open('1.txt','a+',encoding='utf-8')
f.seek(0)
print(f.read())
3、readlines()也是读取文件的方法,返回的是列表 ,读取的是文件的全部内容
用readlines()时也需要先用seek方法将文件指针定位一下
4、readline()是只读一行文件内容,也需要将文件指针定位一下,每次只读一行
5、写文件的方法wirte(),将括号里的内容写到文件的末尾,括号里是字符串
例如
f.seek(0)
f.write('zhangyizhou')
6、写文件的方法writelines(),将括号里列表的内容写到文件末尾
例如
f.seek(0)
f.writelines(['ase','sfr','yiso'])
7、 文件的循环,文件是个可迭代的对象,直接循环文件对象的话循环的是文件的每一行内容
例如:
count = 0
for line in f :
print('第%s行是%s'%(count,line))
count+=1
8、文件的修改
原理,在做文件修改的操作时,都是创建一个和当前文件一样的文件,重新写一遍文件内容,然后将原来的文件删除
9、文件的关闭close()
with的方法,不需要写close()了