|
Size: 1154
Comment:
|
Size: 2174
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 19: | Line 19: |
| 4.5.2 Solution |
|
| Line 26: | Line 24: |
| 使用标准模块'''linecache'''解决,手到擒来! | 使用标准模块'''linecache'''处理,很简单: |
| Line 28: | Line 26: |
| Line 29: | Line 28: |
| #thefiepath 文件路径 #desired_line_number 整数,文件的特定行 |
|
| Line 30: | Line 31: |
| Line 33: | Line 35: |
| The standard linecache module is usually the optimal Python solution for this task, particularly if you have to do this repeatedly for several of a file's lines, as it caches the information it needs to avoid uselessly repeating work. Just remember to use the module's clearcache function to free up the memory used for the cache, if you won't be getting any more lines from the cache for a while but your program keeps running. You can also use checkcache if the file may have changed on disk and you require the updated version. | |
| Line 35: | Line 36: |
| 使用标准模块'''linecache'''处理这个任务,一般来说是最佳方法。由于lincecache缓存了文件的信息,当需要多次提取文件的某些特定行时,可以避免无用的重复操作。 | |
| Line 36: | Line 38: |
| ... | 如果不再需要读取文件特定行而且脚本需要继续运行,应该使用'''linecache'''的'''clearcache'''方法释放缓存占用的内存。 使用'''checkcache'''方法可以检查磁盘文件是否已经变化,如果变化可以更新缓存信息。 '''linecache'''读取并缓存作为参数传入的文件的全部信息。如果处理一个很大的文件,而且只需要读取某一个特定行,使用'''linecache'''可能会进行不是严格必须的操作。如果这个例程恰好是程序性能瓶颈,可以编写函数,封装循环代码,以获得性能提升。 Python 2.2中函数代码如下: {{{ def getline(thefilepath, desired_line_number): if desired_line_number < 1: return '' current_line_number = 0 for line in open(thefilepath): #译注:only in Python 2.2 and late current_line_number += 1 if current_line_number == desired_line_number: return line #译注: 返回特定行数据 return '' }}} Python 2.1版本中只有少许不同, 只是代码效率稍低效,繁琐点。如下改变上面的''''for'''语句即可 {{{ for line in open(thefilepath).xreadlines( ): }}} |
文章来自《Python cookbook》. 翻译仅仅是为了个人学习,其它商业版权纠纷与此无关!
-- 61.182.251.99 [DateTime(2004-09-20T22:17:38Z)] TableOfContents
描述
读取文件特定行
问题 Problem
读取文件的指定一行
解决 Solution
The standard linecache module makes this a snap:
使用标准模块linecache处理,很简单:
import linecache #thefiepath 文件路径 #desired_line_number 整数,文件的特定行 theline = linecache.getline(thefilepath, desired_line_number)
讨论 Discussion
使用标准模块linecache处理这个任务,一般来说是最佳方法。由于lincecache缓存了文件的信息,当需要多次提取文件的某些特定行时,可以避免无用的重复操作。
如果不再需要读取文件特定行而且脚本需要继续运行,应该使用linecache的clearcache方法释放缓存占用的内存。
使用checkcache方法可以检查磁盘文件是否已经变化,如果变化可以更新缓存信息。
linecache读取并缓存作为参数传入的文件的全部信息。如果处理一个很大的文件,而且只需要读取某一个特定行,使用linecache可能会进行不是严格必须的操作。如果这个例程恰好是程序性能瓶颈,可以编写函数,封装循环代码,以获得性能提升。 Python 2.2中函数代码如下:
def getline(thefilepath, desired_line_number):
if desired_line_number < 1: return ''
current_line_number = 0
for line in open(thefilepath): #译注:only in Python 2.2 and late
current_line_number += 1
if current_line_number == desired_line_number: return line #译注: 返回特定行数据
return ''Python 2.1版本中只有少许不同, 只是代码效率稍低效,繁琐点。如下改变上面的'for语句即可
for line in open(thefilepath).xreadlines( ):
