seek指针移动
文件的高级操作:控制文件指针的移动
seek(n,模式) 移动文件读取指针到指定位置。
指针移动的单位都是以bytes/字节为单位
只有一种情况特殊:
t模式下的read(n),n代表的是字符个数
seek(n,模式)
n:字节数 负数的字节数会从右往左走
模式0:参照物是文件开头位置(默认的模式)
模式1:参照物是当前指针所在位置
模式2:参照物是文件末尾位置,应该倒着移动
强调:只有0模式可以在t下使用(1,2模式用在t模式下会报错)
# 指针移动的单位都是以bytes/字节为单位
# 只有一种情况特殊:
# t模式下的read(n),n代表的是字符个数
# with open('aaa.txt',mode='rt',encoding='utf-8') as f:
# res=f.read(4)
# print(res)
# f.seek(n,模式):n指的是移动的字节个数
# 模式:
# 模式0:参照物是文件开头位置
# f.seek(9,0)
# f.seek(3,0) # 3
# 模式1:参照物是当前指针所在位置
# f.seek(9,1)
# f.seek(3,1) # 12
# 模式2:参照物是文件末尾位置,应该倒着移动
# f.seek(-9,2) # 3
# f.seek(-3,2) # 9
# 强调:只有0模式可以在t下使用,1、2必须在b模式下用
# f.tell() # 获取文件指针当前位置
# 示范
# with open('aaa.txt',mode='rb') as f:
# f.seek(9,0)
# f.seek(3,0) # 3
# # print(f.tell())
# f.seek(4,0)
# res=f.read()
# print(res.decode('utf-8'))
# with open('aaa.txt',mode='rb') as f:
# f.seek(9,1)
# f.seek(3,1) # 12
# print(f.tell())
# with open('aaa.txt',mode='rb') as f:
# f.seek(-9,2)
# # print(f.tell())
# f.seek(-3,2)
# # print(f.tell())
# print(f.read().decode('utf-8'))
# rb+
# with open('a.txt','rb+') as f:
# 0模式
# f.seek(3,0)
# f.write(b'abc') # abc
# f.seek(0,0)
# res = f.read()
# print(res) #b'\x00\x00\x00abc'
# 1模式
# f.seek(3,1)
# f.write(b'aaa') # aaa( 把原来的覆盖掉)
# f.seek(0,1)
# res = f.read()
# print(res) #b'\x00\x00\x00aaa'
# 2模式
# f.seek(3,2)
# f.write(b'bbb') # aaa bbb(指针在末尾然后又跳了3个字节才开始写)
# f.seek(-3,2)
# res = f.read()
# print(res) #b'bbb'(2模式指针在末尾本来是读不到东西的,然后让他反向移动会读到3个字节)
# wb+
# with open('b.txt','wb+') as f:
# 0模式
# f.seek(3,0)
# f.write(b'abc') # abc
# f.seek(0,0)
# res = f.read()
# print(res) # 把上面写操作注释掉再运行的话会得到 b'',因为w模式会清空文件内容,同时运行会得到b'\x00\x00\x00abc'
# 1模式
# f.seek(3,1)
# f.write(b'aaa') # aaa
# f.seek(-3,1)
# res = f.read()
# print(res) #指针移动-3才会得到 b'aaa',如果把写的代码注释掉,负数的指针移动会报错
# 2模式
# f.seek(3,2)
# f.write(b'bbb') # bbb
# f.seek(-3,2)
# res = f.read()
# print(res) # b'bbb'
# 总得来说wb+在读操作前没有写入的话永远读不到内容
# ab+
with open('c.txt','ab+') as f:
# 0模式
# f.seek(3,0)
# f.write(b'abc') #abc
f.seek(-1,0)
res = f.read()
print(res)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步