• python对文件中光标的操作迭代器


    seek()    默认从文件开头开始。seek(10)

    seek(10,1)   需要以b的模式读取文件,从相对位置进行移动光标

    seek(-3,2)  倒着移动光标的模式 例如:

    1 f= open('aaa','rb')
    2 f.seek(-3,2)
    3 data = f.read()
    4 print(f.tell())
    5 print(data)
    6 输出:
    7 18
    8 b'123'

    循环文件的方式  为了避免内存的浪费使用

    f = open('aaa','r')      使用循环   for i in f:     一次取一个,不会造成内存的浪费

    大文件快速找到最后一行,例如:

     1 f = open('aaa','rb')
     2 for i in f:
     3     seek_num = -3
     4     while True:
     5         f.seek(seek_num,2)
     6         data = f.readlines()
     7         if len(data) > 1:
     8             print('最后一行是%s'%(data[-1].decode('gbk')))
     9             break
    10         seek_num *=2
    11 输出:
    12 最后一行是2020/2/24  aaa  干了一件事

    迭代器对象生成。例如:

     1 f = open('aaa','r',encoding='gbk')
     2 f_list = f.__iter__()
     3 print(f_list.__next__(),end='')
     4 print(f_list.__next__(),end='')
     5 print(f_list.__next__(),end='')
     6 print(f_list.__next__(),end='')
     7 输出:
     8 2020/2/20  alex  干了一件事
     9 2020/2/21  alex  干了一件事
    10 2020/2/22  alex  干了一件事
    11 2020/2/23  alex  干了一件事

    print(next(f_list))    next() 方法相当于调用f_list.__next__() 方法

    #####调用__iter__()方法就生成一个迭代器。即是一个迭代对象

  • 相关阅读:
    JVM视角:值传递or引用传递?【转】
    mybaits trim用法
    Collections.shuffle()用法
    api缓存
    接口开发
    Integer.parseInt()和这个Integer.valueOf()的详解【转】
    MyBatis 通过包含的jdbcType类型
    idea 相关设置
    idea快捷键
    equals 与 ==
  • 原文地址:https://www.cnblogs.com/ch2020/p/12364224.html
Copyright © 2020-2023  润新知