day08 文件操作
1. 文件操作 open() 文件句柄
open()打开一个文件, 获取的是文件句柄
read() #读取全部内容
read(n)#读取前n个字符
readline()#读取一行 且读取出来末尾都有\n
readlines()#读取全部 每一⾏形成一个元素并放到列表
注意: 读取完的文件句柄一定要关闭 f.close()
write() 如果没有⽂件. 则会创建文件, 如果文件存在. 则将原件中原来的内容删除, 再写入新内容
文件句柄是一个可迭代对象
for line in f: 遍历文件中的内容
路径的问题:
\n \t 转义字符。 有固定的含义的。 推荐用r
1. 绝对路径
从磁盘根目录寻找
2. 相对路径
从当前程序运行的文件夹内寻找
2. 文件操作的相关模式mode
r: 只读
w: 只写
a: 追加
r+:读写
w+:写读
a+:追加读 a+模式下, 不论先读还是后读. 都是读取不到数据的.
只要是a或者ab, a+ 都是在文件的末尾写入. 不论光标在任何位置.
非文本文件(b是bytes)
wb模式下. 可以不指定打开文件的编码. 但是在写文件的时候必须将字符串转化成utf-8的bytes数据
rb
wb
ab
r+b
w+b
a+b
深坑请注意: 在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显示的是多少. 再写入或者操作文件的时候都是在结尾进行的操作.
3. 相关操作
1. seek()移动光标(重点)——seek(n) 光标移动到n位置, 注意, 移动的单位是byte. 所以如果是utf-8的中文部分要是3的倍数.
seek的第二个参数表⽰的是从哪个位置进⾏偏移, 默认是0, 表⽰开头, 1表⽰当前位置, 2表⽰结尾
seek(0) 开头
seek(0,2) 移动到末尾
2. tell() 获取光标所在的位置
3. truncate() 截断文件
4. 文件修改
with open(xxx) as 句柄, \
open(xxxxx)as xxx
不用手动关闭文件句柄
文件修改的步骤
1. 从原文件中读取数据。
2. 写入到副本文件中
3. 删除源文件
4. 把副本重命名成原文件
import os
os.remove()
os.rename()
上一篇: 吹起警哨赶来制止
推荐阅读