跳转至

读写操作

  • 基本流程
# 打开文件,返回一个文件对象,赋值给一个变量
# 操作非UTF-8编码文件时需要指定编码格式
# 如果夹杂非法编码字符,默认忽略处理,也可以自定义
f = open(filename, mode="r", encoding='UTF-8', errors='ignore')

# 操作文件,读取/写入等
f.read()
f.write()

# 关闭文件,防止文件泄露或破坏
f.close()
  • 简化流程

open()上下文管理器替换为with上下文表达式。

# 自动关闭,可同时打开多个文件
with open(filename1, mode) as f1, open(filename2, mode) as f2 :
    f1.read()
    f2.write()

mode 打开模式

读模式

  • "r" 只读(默认),文件不存在则报错

写模式

  • "x" 新建,文件不存在则新建,存在则报错
  • "w" 只写,文件不存在则新建,存在则清空
  • "a" 追加,文件不存在则新建,存在则追加

二进制模式

  • "rb"、"wb"、"ab" 读写bytes数据,比如图片视频等

读写模式

  • "r+"、"rb+"、"w+"、"a+" 读写模式,较少使用

操作文件

读操作

# 读取全部
f.read()

# 读取全部,按行存入list
# 注意:会把每行后面的回车"\n"也读到
f.readlines()

# 可以这样处理
for line in f.readlines():
    print(line.strip()) # 把末尾的'\n'删掉
# 只读指定字符数
f.read(size)

# 只读一行
f.readline()

写操作

f.write()

同步和异步

由于CPU/内存的处理速度远大于外设,即存在速度不匹配的问题

同步:CPU/内存处理完要等待外设处理
异步:CPU/内存处理完不等待外设处理,继续去处理别的事,得到通知后再回来继续处理

回调模式:服务员跑过来通知你 轮询模式:服务员发短信通知你,得不停检查是否发了短信给你


最后更新: 2021-11-26