文件操作

文件操作初识

  • 操作文件需要:
    • 文件路径:直接/间接;绝对/相对
    • 打开方式:读、写、追加、读写
    • 编码方式:utf-8、gbk、...
  • 代码示例:
      f1=open('d:\\balabala.txt',encoding='utf-8',mode='r')
      content=f1.read()
      f1.close()
      ```
    
  • 代码解释:
    • open:内置函数,调用操作系统的接口
    • f1:文件句柄,对文件进行任何操作都要通过句柄
    • encoding: 可以不写参数,默认的编码本为操作系统默认的编码
    • windows:gbk linux:utf-8 mac:utf-8
    • f1.close():关闭文件句柄
  • 文件打开三部曲:
    1. 打开文件
    2. 对文件句柄进行相应操作
    3. 关闭文件
  • 报错原因:
    + 编解码格式不一致(文件存储打开编码本格式不一致) UnicodeDecodeError
    + 路径格式不对:因为\有可能被识别为有特殊含义的字符
    解决方法:双斜杠\和r
    'E:\Desktop'
    r'E:\Desktop'

文件操作的读

  • r(不能创建新文件)
方法 作用
f.read() 文件全部读取
f.read(n) 读取文件前n个字符
f.readline() 按行读取一行
f.readlines() 返回一个列表,列表中的元素是源文件的每一行
for line in f: 全部读出,但是在内存中只占一行的内存量,消耗少
  • rb 读取非文本类型文件 (不能创建新文件)
  • r+ 读并追加(不能创建新文件)
    在光标的位置追加,顺序不能出错

文件操作的写

  • w,wb,w+,w+b
  • w
方法 作用
f.write() 没有文件就创建文件写入,有同路径同名文件就清空后写入
  • wb
    方法使用同上

文件操作的追加

  • a,ab,a+,a+b
  • a
    | 方法 |作用 |
    |-------------|--------------------------------------------|
    |f.write() |没有文件就创建文件写入,有同路径同名文件就追加写入 |

文件操作的改

方法:

  1. 以读的模式打开原文件
  2. 以写的模式创建一个新文件
  3. 将原文件的内容读出来修改成新内容,写入新文件’
  4. 将原文件删除
  5. 将新文件重命名为原文件
import os
with open('aaa',encoding='utf-8') as f1,\
      open('bbb',encoding='utf-8,mode='w') as f2:
old=f1.read()
news=old.replace('xa','xb')
f2.write(news)
os.remove('aaa')
os.rename('bbb')


#改良版
import os
with open('aaa',encoding='utf-8') as f1,\
      open('bbb',encoding='utf-8,mode='w') as f2:
for line in f1:
      news=line.replace('xa','xb')
      f2.write(news)
os.remove('aaa')
os.rename('bbb')

文件操作的其他模式

  • 其他函数
方法 作用
f.tell() 读取光标的位置,单位是字节
f.seek(n) 调整光标的位置到n
f.flush() 强制刷新
f.readlines() 返回一个列表,列表中的元素是源文件的每一行
for line in f: 全部读出,但是在内存中只占一行的内存量,消耗少
  • 打开文件的其他方式
    优点1:不用手动关闭文件句柄
with open("xxx",encoding='utf-8') as f1:
      print(f1.read())

优点2:复数操作

with open("xxx",encoding='utf-8') as f1,\
            open("ddd",encoding='utf-8',mode='w') as f2:
      print(f1.read())
posted @ 2020-09-07 00:02  life_if_forever  阅读(72)  评论(0)    收藏  举报