当文件内容中间需要增加内容时,单纯的使用w和a模式已无法实现,所以我们需要对文件内的光标进行移动
>>>硬盘上从来没有修改一说,硬盘上只有覆盖,即新内容覆盖新内容。<<<
光标移动常用方法
seek(offset,whence)
-
offset 代表文件指针的偏移量,单位是字节,
-
whence 代表光标的位置,
0:参照文件的开头 t和b都可以使用
1:参照光标所在的当前位置 只能在b模式下用
2:参照文件的末尾 只能在b模式下使用
# test02.txt # >>>>>> #tian是天上的云 #tian是天上的云 #tian是天上的云 # >>>>>>
with open(r‘test02.txt‘,‘r‘,encoding=‘utf-8‘) as f: print(f.read(5)) #tian是
# 在rt模式下 read内的数字 表示的是字符的个数
# 除此之外,数字表示的都是字节
只有在r模式下才可以进行游标操作(游标操作的是字节) with open(‘a.txt‘,‘rb‘) as rb: date = rb.read(10) f.seek(2,0) #seek(offset,whence) offset 前面的是游标移动的字节数,正数表示向后移动,负号表示向前移动。 逗号后面的数字在b模式下可以为0、1、2 whence 0:游标置到开头 1:游标置到当前位指 2:游标置到末尾 # 你是日本人 with open(‘target.txt‘, ‘rb‘) as f: # 先读6个字节 data = f.read(6) print(data.decode(‘utf-8‘)) # 你是 # 将游标从头开始往后偏移3个字节 f.seek(3, 0) data = f.read(6) print(data.decode(‘utf-8‘)) # 是日 # 从当前游标位置往前偏移3个字节 f.seek(-3, 1) data = f.read(3) print(data.decode(‘utf-8‘)) # 日 f.seek(-3, 2) data = f.read(3) print(data.decode(‘utf-8‘)) # 人