Heim  >  Artikel  >  Backend-Entwicklung  >  Python linecache模块

Python linecache模块

高洛峰
高洛峰Original
2016-11-22 09:50:481608Durchsuche

linecache

今天分享一个python的小模块: linecache, 可以用它方便地获取某一文件某一行的内容。而且它也被 traceback 模块用来获取相关源码信息来展示。
用法很简单:

>>> import linecache
>>> linecache.getline('/etc/passwd', 4)
'sys:x:3:3:sys:/dev:/bin/sh\n'

linecache.getline 第一参数是文件名,第二个参数是行编号。如果文件名不能直接找到的话,会从 sys.path 里找。

如果请求的行数超过文件行数,函数不会报错,而是返回''空字符串。如果文件不存在,函数也不会报错,也返回''空字符串。

linecache 会尝试用缓存一些信息来优化对文件的读取。它还提供了两个方法来处理缓存相关。

linecache.clearcache()   # 清除不再需要的linecache.getcache()获取的内容

linecache.checkcache([filename])  # 检查文件在硬盘上是否有更新,如果有更新缓存。
                                  # 如果没有提供文件名参数,则检查linecache缓存里所有的条目

其它

当文件很大而只要读取其中一行时,如果采用linecache成为程序的瓶颈,也可以采用如下方法来获得速度上一些提升:

def get_line(thefilepath, desired_line_number):
    if desired_line_number < 1: return &#39;&#39;
    for current_line_number, line in enumerate(open(thefilepath, &#39;rU&#39;)):
        if current_line_number == desired_line_number -1:
            return line
    return &#39;&#39;

ps: 打开文件的方式'rU'是以一种windows,mac,unix三个平台同一的方式打开,都读取成 n

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Python 有序字典Nächster Artikel:Python 信号处理 signal 模块