2007-07-09

 

Python Cookbook 2.4 在文件中读入指定行

需求:

需要从文件中得到指定行.

讨论:

标准库提供的linecache模块提供了解决方案:

import linecache
theline = linecache.getline(thefilepath, desired_line_number)

在处理这一类的问题时,linecache总是可以做为一种方案,尤其是要重复执行的时候,因为linecache提供的机制能防止重复进行一些无用的操作.当你使用完毕的时候 ,调用clearcache方法来清空使用的缓存.也可以使用checkcache确保对文件的修改正确的保存在磁盘上.
linecache读入并缓存给出文件的所有内容,所以假如文件非常的巨大,linecache可能要做更多的工作.如果这成为你程序的瓶颈,用循环处理可能会获得更好的效果:

def getline(thefilepath, desired_line_number):
    if desired_line_number < 1: return ''
    for current_line_number, line in enumerate(open(thefilepath, 'rU')):
        if current_line_number == desired_line_number-1: return line
    return ''

需要注意的地方是enumerate从0开始计数,所以我们要在计算的时候减一.

相关说明:

class enumerate(object)
 |  enumerate(iterable) -> iterator for index, value of iterable
 | 
 |  Return an enumerate object.  iterable must be an other object that supports
 |  iteration.  The enumerate object yields pairs containing a count (from
 |  zero) and a value yielded by the iterable argument.  enumerate is useful
 |  for obtaining an indexed list: (0, seq[0]), (1, seq[1]), (2, seq[2]), ...

Comments: 发表评论



<< Home

This page is powered by Blogger. Isn't yours?