• python处理大文件


    问题:有一个比较大的文件,从几M到1G,如何快速获取其中的某一行?

    解决方式:

    如下,采用for in文件迭代器的方式,在加一个行计数器即可。禁止采用f.readline()的方式,readline效率极其低下,readlines对内存消耗过大。

    def fn(which_line):
        f = open("abc.txt", "rt")
        counter = 0    
        for line in f:
            counter += 1
            if which_line == counter:
                print("find this line:{}".format(line))
                break    

    问题:python读取文件时,如何判断文件是否到了末尾?

    解决方式:

    1)判断line的内容是否为空,即 if line == "", 则认为已经到了文件末尾,原因是空格实际也存在换行符。

    2)捕获特定异常StopIteration。原因是在遍历的时候,我们不知道什么时候会跳出循环,

    跳出循环后,我们可以给循环外部加一个   next(f)    语句,用异常捕获语句处理此行代码,如果捕获到了,则说明肯定到了文件末尾

    def fn():
        f = open("abc.txt", "rt")
        for line in f:
            print(line)
    
        try:
            next(f)
            # 此处前后可加其他处理语句
        except StopIteration:
            is_file_end = True
        except Exception as e:
            pass
        finally:
         if f:
                f.close()
           do something else  

    注意: StopIteration捕获语句必须在Exception之前,因为StopIteration继承了Exception

  • 相关阅读:
    全站生成静态文件的通用方法
    Web.config配置文件详解(新手必看)
    iis7/7.5设置上传文件最大大小
    C# 中的常用正则表达式总结
    60款很酷的 jQuery 幻灯片演示和下载
    DataReader记录生成多列的表格
    正则表达式
    博客转移
    ASP.Net学习之常用SQL存储过程(1)
    遍历Request的信息
  • 原文地址:https://www.cnblogs.com/zhanghaibin16/p/12326364.html
Copyright © 2020-2023  润新知