【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()的返回,列表中每行内容也都是以\n结尾的。

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

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

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

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

  

 

posted @ 2018-04-02 10:20  K.Takanashi  阅读(1623)  评论(1编辑  收藏  举报