• 【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的智能结合。

      

  • 相关阅读:
    [BZOJ2049] [SDOI2008] 洞穴勘测
    BZOJ2594: [Wc2006]水管局长数据加强版
    P4211[BZOJ 3626] [LNOI2014]LCA
    FindLetter 类——查找文件中特定的字符,每一行开头为某一个字符,则跳过
    SolrJ 的运用
    Golang
    注册免费试用12个月的亚马逊AWS云计算服务
    TensorFlow学习笔记(一)
    Hexo之旅(四):文章编写技巧
    高阶函数
  • 原文地址:https://www.cnblogs.com/franknihao/p/8690643.html
Copyright © 2020-2023  润新知