• 【Python】 linecache模块读取文件


    【linecache】

      过往在读取文件的时候,我们通常使用的是这种模式:

    with open('file.txt','r') as f:
        line = f.readline()
        while line:
            print line  # 一些行级别的处理
            line = f.readline()

      这么做的好处在于通过一行一行读取内容,不会一下子把整个文件内容读到内存中去。

      在长时间的实践中可以发现,这种读取文件的代码是一种相对比较固定的模式。既然是固定的模式,那么肯定就有轮子了。事实上python自带了一个linecache模块,这个模块可以方便地实现对行的读取,并且是按照上面的那种逐渐缓存式的读取。

    ■  基本使用  

      linecache.getlines(filename)  指向一个文件,获取其所有行。返回的是一个列表,相当于是f.readlines()的返回,列表中每行内容也都是以 结尾的。

      linecache.getlilne(filename,lineno)  指定一行返回。注意这个是LineNo而不是index,也就是说getline(filename,1)返回的是第一行而不是第二行。返回的行包含换行符,另外如果指定行不存在也不会报错而是返回空行。

      linecache.updatecache(filename)  当文件内容发生改变时,如果需要获得到最新的文件内容,那么需要调用这个方法。如果不调用,仍然使用在缓存中的老文件内容。类似的操作还可以是linecache.clearcache之后再getlines也行。

      linecache.clearcache()  清除当前的所有缓存

      linecache.checkcache(filename)  检查缓存的有效性,如果文件已经不存在,或者内容被改变,那么老内容的缓存会被清除。在很多其他类似的场景中这个方法似乎应该是自动被调用的,但是在linecache中这个方法是需要手动调用的。从某种意义上来说,这个方法相当于是updatecache和clearcache的智能结合。

      

  • 相关阅读:
    Servlet(九):web.xml文件和server.xml文件
    Servlet(八):ServletContext对象和ServletConfig对象
    Servlet(七):session
    Servlet(六):Cookie
    Servlet(五):请求转发和重定向
    Servlet(四):request和response对象
    Servlet(三):生命周期、常用方法、常见错误
    【php】在Windows2003下的IIS配置php5.4
    Spring AOP监控SQL运行
    算法导论—无向图的遍历(BFS+DFS,MATLAB)
  • 原文地址:https://www.cnblogs.com/franknihao/p/8690643.html
Copyright © 2020-2023  润新知