码迷,mamicode.com
首页 > 其他好文 > 详细

文件操作

时间:2018-05-06 20:00:26      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:清空   不可   ble   pen   coding   回文   truncate   作文件   乱码   

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

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

一、打开文件

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

文件句柄 = 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()           #只读一行 ,遇到\r or \n为止
  • f.write()   #写入数据,可写模式下可用
  • f.tell()   #查看指针当前位置
  • f.seek() #跳转指针到该位置处
    • tell,seek按字节查找,通过tell()保存指针位置, 再通过seek()打开保存的指针位置, 在做日志增量分析时非常有用  
  • fileno()        #返回文件句柄在内核中的索引值,以后做IO多路复用时可以用到
  • flush():        #把文件从内存buffer里强制刷新到硬盘
  • readable()   #判断是否可读
  • seekable()   #判断是否可进行seek操作
  • truncate()    #按指定长度截断文件 ,指定长度的话,就从文件开头开始截断指定长度,不指定长度的话,就从当前位置到文件尾部的内容全去掉。
  • writeable()   #判断文件是否可写

三 关闭文件

  •  f.close()
  • 用 with open("ha1.log","r+",encoding="utf-8") as f: 代替f = open("ha1.log","r+",encoding="utf-8")
    • 可以不用写f.close() Python自动关闭  
    • 可以同时打开两个文件(@2.7之后的版本) with open("源文件","r+",encoding="utf-8") as f,open("新文件","r+",encoding="utf-8") as f:  
      优化内存,文件太大,可以通过这个方式

注意

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

文件操作

标签:清空   不可   ble   pen   coding   回文   truncate   作文件   乱码   

原文地址:https://www.cnblogs.com/leiyiming/p/8999087.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!