专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

按行读取linecache

模块linecache,该模块允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单个文件读取多行

import linecache
#获取文件中第4行的内容
a=linecache.getline('/etc/passwd', 4)

#获取a.txt文件中第1-4行的内容
a=linecache.getlines('a.txt')[0:4]

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

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

注意:使用linecache.getlines(‘a.txt’)打开文件的内容之后,如果a.txt文件发生了改变,如果要再次用linecache.getlines获取的内容,不是文件的最新内容,还是之前的内容,此时有两种方法:

1、使用linecache.checkcache(filename)来更新文件在硬盘上的缓存,然后在执行linecache.getlines(‘a.txt’)就可以获取到a.txt的最新内容;

2、直接使用linecache.updatecache(‘a.txt’),即可获取最新的a.txt的罪行内容

另外:

1)、读取文件之后,不需要使用文件的缓存时,需要在最后清理一下缓存,使linecache.clearcache()清理缓存,释放缓存。

2)、此模块使用内存来缓存文件内容,所以需要耗费内存,打开文件的大小和打开速度和你的内存大小有关系。

完整示例:

# coding=utf-8
import os
import linecache
def get_content(path):
    '''读取缓存中文件内容,以字符串形式返回'''
    if os.path.exists(path):
        content = ''
        cache_data = linecache.getlines(path)
        for line in range(len(cache_data)):
            content += cache_data[line]
        return content
    else:
        print('the path [{}] is not exist!'.format(path))
def main():
    path = 'c:/test.txt'
    content = get_content(path)
    print(content)
if __name__ == '__main__':
    main()

文章永久链接:https://tech.souyunku.com/42133

未经允许不得转载:搜云库技术团队 » 按行读取linecache

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们