Welcome 微信登录

首页 / 操作系统 / Linux / Python linecache模块

Table of Contents

  • 1. linecache
    • 1.1. 其它
  • 2. 参考资料

linecache

今天分享一个python的小模块: linecache, 可以用它方便地获取某一文件某一行的内容。而且它也被 traceback 模块用来获取相关源码信息来展示。
用法很简单:>>> import linecache>>> linecache.getline("/etc/passwd", 4)"sys:x:3:3:sys:/dev:/bin/sh "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 ""for current_line_number, line in enumerate(open(thefilepath, "rU")):if current_line_number == desired_line_number -1:return linereturn ""ps: 打开文件的方式"rU"是以一种windows,mac,unix三个平台同一的方式打开,都读取成 , 参照这里。

参考资料

  • https://docs.python.org/2/library/linecache.html
  • 《Python Cookbook》Chapter2.4
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/137770.htm