文件的操作之指针移动

要点:

指针的移动都是以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())
# b模式下先将指针从开头移到第三个字节,然后开始读取并用utf-8# 解码。
with open('aaa.txt',mode='rb') as f:
    f.seek(3,0)
    res=f.read()
    print(res.decode('utf-8'))

ps:0,1模式下的指针移动不受文件长度影响,2模式下指针最多可以移到0


posted @ 2020-03-21 19:58  江湖有梦  阅读(713)  评论(0编辑  收藏  举报