open(文件路径,打开模式) #打开文件
file() #Python2里面也可用此方法打开文件
#文件打开有3种方式
r #如果打开的文件没有指定模式,那么默认是读
r+ #读写模式 只要沾上r,文件不存在的时候,打开都会报错
w #w模式会清空原有文件内容
w+ #写读模式 只要沾上w,他就会把文件内容清空
a #追加
a+ #追加读写
read() #读取文件里面的全部内容,返回的是一个字符串
readline() #只读取一行的内容
readlines() #读取文件里面所有的内容,把文件里面每一行的内容放到一个list中
write() #需要传入一个字符串作为参数
writelines() #写的时候,需要传入一个可迭代的对象
PS:如果需写入多行值,即一般用可迭代对象封装,建议用writelines,因为不用自己再写循环;但若只是想写一个字符串,那建议用write,因为这样直接写性能高,否则用writelines会去循环遍历着写。
seek(0) #seek移动指针的时候,只对读好使,对写不好使
tell() #查看当前文件指针的位置
truncate() #清空文件内容
高效读文件的方法:
直接循环文件对象即可(直接循环文件对象的话,就是循环文件的每一行),这样只会每一次把当前行加载到内存,若用write或writelines方法,则会将整个文件内容加载到内存,这样当文件内容比较大时,会相当耗费内存。
flush() #立即把缓冲区里面的内容写到磁盘里面
用with打开文件时,它会自动管理文件对象,当不再使用时,便会自动关闭该文件,用法如下:
with open('a.txt','w') as f, open('b.txt','w') as f2:
f.write('呵呵')
f2.write('哈哈')
文件修改:
有两种方式:
当文件体量比较小,即几行内容时,可直接将修改后内容存入一新字符串,再去清空(用truncate()方法)原文件内容,再将新字符串写入原文件;
但当文件体量比较大时,全部读出再写入的方式可能会一瞬间占用掉大量内存,这样性能会不太好,而好的方式最好是拿一行处理一行,也就是用下面的方式:
原理就是将修改后的内容写入新文件,之后删除原文件,再将新文件改名同原文件
如下:
import os
with open('geci',encoding='utf-8') as f, open('geci.bak','w',encoding='utf-8') as f2:
for line in f:
new_line = line.replace('一','二')
f2.write(new_line)
os.remove('geci')
os.rename('geci.bak','geci')
浙公网安备 33010602011771号