zoukankan      html  css  js  c++  java
  • 文件操作高级指针移动

    seek指针移动
    文件的高级操作:控制文件指针的移动
    seek(n,模式) 移动文件读取指针到指定位置。
    指针移动的单位都是以bytes/字节为单位

    只有一种情况特殊:
    t模式下的read(n),n代表的是字符个数

    seek(n,模式)
    n:字节数 负数的字节数会从右往左走
    模式0:参照物是文件开头位置(默认的模式)
    模式1:参照物是当前指针所在位置
    模式2:参照物是文件末尾位置,应该倒着移动

    强调:只有0模式可以在t下使用(1,2模式用在t模式下会报错)

    seek指针

    
    
    
    
    # 指针移动的单位都是以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'x00x00x00abc'

    # 1模式
    # f.seek(3,1)
    # f.write(b'aaa') # aaa( 把原来的覆盖掉)
    # f.seek(0,1)
    # res = f.read()
    # print(res) #b'x00x00x00aaa'

    # 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'x00x00x00abc'

    # 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)
     
  • 相关阅读:
    前端学习笔记系列一:5 在项目中引入阿里图标icon
    前端学习笔记系列一:3 Vue中的nextTick
    前端学习笔记系列一:4 vue中@click.native
    学习习惯
    美团作价27亿美元正式收购摩拜
    北京 一卡通 退卡
    愚人自以慧,智者自以愚。
    袁隆平分享8字成功经验
    性能计数器 叹号
    升级 windows 2016
  • 原文地址:https://www.cnblogs.com/h1227/p/12505043.html
Copyright © 2011-2022 走看看