指针移动的单位都是以bytes/字节为单位
只有一种情况特殊:
t模式下的read(n),n代表的是字符个数

aaa.txt

  1. abc你好

按字符移动

  1. with open('aaa.txt', mode='rt', encoding='utf-8') as f:
  2. res = f.read(4)
  3. print(res)

按字节移动

强调:只有0模式可以在t下使用,1、2必须在b模式下用

  1. # f.seek(n,模式):n指的是移动的字节个数
  2. # 模式:
  3. # 模式0:参照物是文件开头位置
  4. f.seek(9,0)
  5. f.seek(3,0) # 3

模式1

参照物是当前指针所在位置

  • f.seek() # 移动问价指针
  • f.tell() # 获取文件指针当前位置
    1. f.seek(9,1)
    2. f.seek(3,1) # 12

    模式2

    参照物是文件末尾位置,应该倒着移动
    1. f.seek(-9,2) # 3
    2. f.seek(-3,2) # 9

    案例

    ```python 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)

  1. # print(f.tell())
  2. f.seek(-3,2)
  3. # print(f.tell())
  4. print(f.read().decode('utf-8'))

```