文件操作

本节导读

  • 操作文件的步骤
  • 打开文件
  • 操作文件
  • 关闭文件
  • 注意事项

一操作文件时要经历如下步骤:

  • 打开文件
  • 操作文件
  • 关闭文件

一、打开文件

打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

文件句柄 = open('文件路径', '模式')

打开文件的模式有:

  • r ,只读模式【默认】
  • w,只写模式【不可读;不存在则创建;存在则清空内容;】
  • x, 只写模式【不可读;不存在则创建,存在则报错】
  • a, 追加模式【不可读;   不存在则创建;存在则只追加内容;】

  "+" 表示可以同时读写某个文件

  • r+, 读写【可读,可写】        覆盖前文,从开始向后读末尾追加,指针移动到最后
  • w+,写读【可读,可写】        先清空,再写,再读写的内容,一写指针就到最后
  • x+ ,写读【可读,可写】        先清空,再写,再读写的内容,一写指针就到最后  文件存在即报错
  • a+, 写读【可读,可写】        打开的同时已经把指针移动到最后了 

  "b"表示以字节的方式操作

  • rb  或 r+b
  • wb 或 w+b
  • xb 或 w+b
  • ab 或 a+b
  •  注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型

 注意:

  • r与r+的区别

    r只读,r+读写,不创建

    w新建只写,w+新建读写,二者都会将文件内容清零 (以w方式打开,不能读出。w+可读写)

  • w+与r+区别:
    r+:可读可写,若文件不存在,报错;w+: 可读可写,若文件不存在,创建

二 文件操作

for line in f:  #循环文件
f.read() #读取文件,可读模式下可用,按字符查找,读取时可以指定读取多少字符
readline()           #只读一行 ,遇到
 or 
为止
f.write()   #写入数据,可写模式下可用
f.tell()   #查看指针当前位置
f.seek() #跳转指针到该位置处
#注意 tell,seek按字节查找,通过tell()保存指针位置, 再通过seek()打开保存的指针位置, 在做日志增量分析时非常有用  

fileno() #返回文件句柄在内核中的索引值,以后做IO多路复用时可以用到 flush(): #把文件从内存buffer里强制刷新到硬盘 readable() #判断是否可读 seekable() #判断是否可进行seek操作 truncate() #按指定长度截断文件 ,指定长度的话,就从文件开头开始截断指定长度,不指定长度的话,就从当前位置到文件尾部的内容全去掉。 writeable() #判断文件是否可写

三 关闭文件

  1.  f.close()
  2. with open("ha1.log","r+",encoding="utf-8") as f: 

    可以不用写f.close() Python自动关闭  

    可以同时打开两个文件(@2.7之后的版本) with open("源文件","r+",encoding="utf-8") as f,open("新文件","r+",encoding="utf-8") as f:  优化内存,文件太大,可以通过这个方式

注意

  • 不知道编码,rb,用于网络传输等不给人看的方
  • 不知道编码,用二进制模式rb,用于网络传输等不给人看的方式
  • 不知道要处理的文件编码是什么,用chardet模块,尝试判断字符编码
  • 写入的数据,会短暂的在内存停留,到达一定的量才存到硬盘,以此来提高运行速度
  • 修改数据,文件开始和结束的位置确定,不可以改变,修改可能会让某些字符乱码
原文地址:https://www.cnblogs.com/leiyiming/p/8999087.html