资讯专栏INFORMATION COLUMN

Python linecache模块

cnio / 2868人阅读

摘要:今天分享一个的小模块可以用它方便地获取某一文件某一行的内容。而且它也被模块用来获取相关源码信息来展示。用法很简单第一参数是文件名,第二个参数是行编号。如果请求的行数超过文件行数,函数不会报错,而是返回空字符串。

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 line
    return ""

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

参考资料

https://docs.python.org/2/lib...

《Python Cookbook》Chapter2.4

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44299.html

相关文章

  • 使用Python解析nginx日志文件

    摘要:项目的一个需求是解析的日志文件。项目中已经按照业务规则对日志文件进行了处理命名规则如下并且所有的日志文件存放在统一路径下。模块使用缓存,所以会耗费内存,耗费量与要解析的文件相关。剩下的工作就是根据业务需要,对获得的基本信息进行处理。 项目的一个需求是解析nginx的日志文件。 简单的整理如下: 日志规则描述 首先要明确自己的Nginx的日志格式,这里采用默认Nginx日志格式: ...

    Baaaan 评论0 收藏0
  • 使用Python解析nginx日志文件

    摘要:项目的一个需求是解析的日志文件。项目中已经按照业务规则对日志文件进行了处理命名规则如下并且所有的日志文件存放在统一路径下。模块使用缓存,所以会耗费内存,耗费量与要解析的文件相关。剩下的工作就是根据业务需要,对获得的基本信息进行处理。 项目的一个需求是解析nginx的日志文件。 简单的整理如下: 日志规则描述 首先要明确自己的Nginx的日志格式,这里采用默认Nginx日志格式: ...

    bawn 评论0 收藏0
  • 最流行的Python模块库大全【收藏】

    摘要:转自程序员的资料库最流行的模块库大全收藏下面的列表是最流行的模块库,该资源列表列出了使用频率最高的模块库,是学习最好的资源之一,赶紧收藏吧 转自:程序员的资料库-最流行的Python模块库大全【收藏】 下面的列表是最流行的Python模块库,该Python资源列表列出了使用频率最高的Python模块库,是学习Python最好的资源之一,赶紧收藏吧!! os (2810) ...

    Caizhenhao 评论0 收藏0
  • Python_异常和模块

    摘要:例如等价于到结束,但不包括。例如返回没有每次跳跃的间距,默认为。 异常处理 单个异常处理: try: print(num) except NameError: print(没有定义变量) except FileNotFoundError: print(找不到文件路径) print(1) 多个异常处理: try: print(num) # 1...

    piglei 评论0 收藏0
  • Python标准库系列之模块介绍

    摘要:的模块其实就是封装了一个或者多个功能的代码集合,以便于重用,模块可以是一个文件也可以是一个目录,目录的形式称作包。已经导入的模块会保存在字典中。 Python的模块其实就是封装了一个或者多个功能的代码集合,以便于重用,模块可以是一个文件也可以是一个目录,目录的形式称作包。 模块分类 内置模块 内置模块可以理解成当你安装好python环境之后,直接可以使用import导入的就是内置模块,...

    v1 评论0 收藏0

发表评论

0条评论

cnio

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<