zoukankan      html  css  js  c++  java
  • Python linecache模块

    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三个平台同一的方式打开,都读取成 , 参照这里

    参考资料

  • 相关阅读:
    UniConnector平台
    UniConnector平台
    UniChat 社交IM 集成环信
    移动办公OA App 工作流审批
    netcore 部署Docker
    .net core 腾讯短信发送
    Linux error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol
    Linux nginx 自启动
    Linux 配置、问题
    Swagger自定义默认首页
  • 原文地址:https://www.cnblogs.com/nisen/p/6087577.html
Copyright © 2011-2022 走看看