文件操作
'''
1,文件操作。
1,编码方式:utf-8 gbk 。。。。
2,打开⽂文件的⽅方式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默认使⽤用的是r(只读)模式
byte操作,模式后面+b,例如,rb,二进制打开
以什么编码方式储存的文件,就以什么编码打开进行操作。
# 路径
# 绝对路径,从磁盘根目录开始
# 相对路径,从当前路径开始,找到上层文件用 ../ 推荐使用
# 读文件
# read 将文件中所有内容一次性读出来,缺点:占内存
# read(n) 一次读取n个字节/字符,下次读取从上次位置开始
# readline,一次读取一行数据,注意:行尾有换行\n 用strip()方法消除
# readlines,一次将文件读取出来,放到列表中,同样可能会爆内存,不推荐
# 循环读取 for line in f: 一次读一行
# 写文件
# 如果文件不存在,则创建,如果文件存在,则覆盖。
# w 写
# wb 二进制写,不需要指定编码
# 追加(a,ab)
# 在追加模式下. 我们写入的内容会追加在⽂文件的结尾.
# 读写模式(r+,r+b)
# 对于读写模式.必须是先读.因为默认光标是在开头的.写,在末尾追加
# 较常用
# 写读(w+,w+b)
# 先将所有的内容清空. 然后写入. 最后读取. 但是读取的内容是空的, 不常用
# 追加读(a+)
# a+模式下, 不论先读还是后读. 都是读取不到数据的.
# 其他操作
# seek(n) 光标移动到n位置, 注意, 移动的单位是byte. 所以如果是UTF-8的中⽂文部分要 是3的倍数 .
# 通常我们使⽤用seek都是移动到开头或者结尾.
# 移动到开头: seek(0)
# 移动到结尾: seek(0,2) seek的第⼆二个参数表⽰示的是从哪个位置进⾏行行偏移, 默认是0, 表 ⽰示开头, 1表⽰示当前位置, 2表⽰示结尾
# tell 使⽤用tell()可以帮我们获取到当前光标在什么位置
# truncate() 截断⽂文件
# 深坑请注意: 在r+模式下. 如果读取了了内容. 不论读取内容多少. 光标显示的是多少. 再写入 或者操作⽂件的时候都是在结尾进行的操作.
# 文件修改
# 源文件,读入再修改。弊端,慢,一次读入可能会爆内存。
# 一边读,一边写。 推荐
'''