zoukankan      html  css  js  c++  java
  • 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__()方法就生成一个迭代器。即是一个迭代对象

  • 相关阅读:
    latin1字符集的数据转换为utf8字符集
    mysql使用utf8mb4经验吐血总结
    字符集GBK和UTF8的区别说明
    10分钟学会理解和解决MySQL乱码问题
    MySQL大小写敏感总结
    分区表基本类型
    form表单提交的几种方法
    Redis面试题及分布式集群
    ELK
    Linux下的crontab定时执行任务命令详解
  • 原文地址:https://www.cnblogs.com/ch2020/p/12364224.html
Copyright © 2011-2022 走看看