文件处理
f = open('文件名的路径', '打开的模式', encoding='字符编码')
f.close()
# 文件的上下文管理: with , flask框架的上下文管理(后期学习)
with open('文件名的路径', '打开的模式', encoding='字符编码') as f:
# 内部帮你执行f.close()
什么是文件
操作系统提供的虚拟概念,用来存储信息的
操作文件的流程
- 打开文件 --》 open
- 修改文件 --》 write/read
- 保存文件 --》 flush
- 关闭文件 --》 close
文件打开文件的三种模式
- r --》只读
- w --》清空写入,创建新文件
- a --》追加写入,创建新文件 把光标移动到文件尾部
文件打开的两种方式
两种方式一般不单独使用
- t 文本模式
- b 二进制模式,一般用于音频/图片/视频
绝对路径和相对路径
绝对路径:
从盘符开始
相对路径:
相对于当前执行文件的文件夹下的所有文件
with管理文件上下文
跳出with缩进外,会自动关闭文件。可以一次性打开多个文件
文件的高级应用
新的打开文件的模式
- r+,覆盖光标后(文件头)的内容
- w+,w清空文件,读的功能失去了意义
- a+,a让光标移到文件尾,你读也读不出来
如果真要即写又读,打开两次文件
光标移动的应用
- read,以字符为单位,读取n个字符,默认读取全部
以下三个方法以字节为单位
- seek:移动光标:0表示文件头;1表示当前位置;2表示文件末尾
- tell:告诉你当前位置
- truncate:截断处理,truncate(0),清空文件
打开文件取值的优化方式:
- f.read():
直接将文件中所有数据一次性取出。
缺点:
内存容易溢出。
- for循环f句柄操作:
# 通过for循环,将每一行取出,保证不会内存溢出
for line in f:
print(line)
- f.readline(): (了解)
读取一行,光标移动到第二行。
文件的修改
文件没有插入,只有覆盖一说
with open('test.txt','r',encoding='utf8') as fr, open('test_swap.txt','w',encoding='utf8') as fw:
data = fr.read()
# 做修改
fw.write(data)
import os
os.remove('test.txt')
os.rename('test_swap.txt','test.txt')