zoukankan      html  css  js  c++  java
  • linecache模块 随机读取文件指定行

    除了可以借助 fileinput 模块实现读取文件外,Python 还提供了 linecache 模块。和前者不同,linecache 模块擅长读取指定文件中的指定行。换句话说,如果我们想读取某个文件中指定行包含的数据,就可以使用 linecache 模块。

    值得一提的是,linecache 模块常用来读取 Python 源文件中的代码,它使用的是 UTF-8 编码格式来读取文件内容。这意味着,使用该模块读取的文件,其编码格式也必须为 UTF-8,否则要么读取出来的数据是乱码,要么直接读取失败(Python 解释器会报 SyntaxError 异常)。

    要使用 linecache 模块,就必须知道其包含了哪些函数。linecache 模块中常用的函数及其功能如表 1 所示。

    表 1 linecache模块常用函数及功能
    函数基本格式功能
    linecache.getline(filename, lineno, module_globals=None) 读取指定模块中指定文件的指定行(仅读取指定文件时,无需指定模块)。其中,filename 参数用来指定文件名,lineno 用来指定行号,module_globals 参数用来指定要读取的具体模块名。注意,当指定文件以相对路径的方式传给 filename 参数时,该函数以按照 sys.path 规定的路径查找该文件。
    linecache.clearcache() 如果程序某处,不再需要之前使用 getline() 函数读取的数据,则可以使用该函数清空缓存。
    linecache.checkcache(filename=None) 检查缓存的有效性,即如果使用 getline() 函数读取的数据,其实在本地已经被修改,而我们需要的是新的数据,此时就可以使用该函数检查缓存的是否为新的数据。注意,如果省略文件名,该函数将检车所有缓存数据的有效性。


    举个例子:

    1. import linecache
    2. import string
    3. #读取string模块中第 3 行的数据
    4. print(linecache.getline(string.__file__, 3))
    5. # 读取普通文件的第2行
    6. print(linecache.getline('my_file.txt', 2))

    在执行该程序之前,需保证 my_file.txt 文件是以 UTF-8 编码格式保存的(Python 提供的模块,通常编码格式为 UTF-8)。在此基础上,执行该程序,其输出结果为:

    Public module variables:

    http://c.biancheng.net/linux_tutorial/

  • 相关阅读:
    USB耳机声卡-音频输入/输出控制器:DP108替代兼容CM108
    关于lora标配SPDT大功率射频开关
    关于2.4G芯片中 CC2500的相关资料
    关于ESP8266EX的一些资料
    【1801日語写作】第11回:5月21日
    【日本語新聞選読】第11回:5月19日
    【1801日語听解4】第11回:5月19日
    【1801日語視聴説2】第11回:5月18日
    【1901日語听解2】第11回:5月18日
    【1701日本語新聞編集】第10回:5月15日
  • 原文地址:https://www.cnblogs.com/lincappu/p/13496141.html
Copyright © 2011-2022 走看看