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')

 

posted on 2018-01-16 18:11  艾谁谁  阅读(66)  评论(0)    收藏  举报