Python linecache模块

linecache模块
通过用它可以方便地获取某一文件某一行的内
例如,你想获取input.txt中的第8行,你可以这样:
1.引入这个库

import linecache

2.调用getline()函数

line = linecache.getline('input.txt',8).strip()

linecache.getline () 第一参数是文件名,第二个参数是行编号。如果文件名不能直接找到的话,会从 sys.path 里找。如果请求的行数超过文件行数,函数不会报错,而是返回’‘空字符串。如果文件不存在,函数也不会报错,也返回’'空字符串。

学以致用,接下来就用这个模块写一个交换文件奇偶行的python代码:

# -*- coding: utf-8 -*-
import linecache

def ji_ou_change(file_b,file_a):
    f_be=open(file_b,'r',encoding='utf-8')
    f_af=open(file_a,'w',encoding='utf-8')
    line_num=len(f_be.readlines())
    for i in range(1 , line_num + 1):
        if i % 2 == 0:
            line = linecache.getline(file_b,i-1).strip()
            print(line + '\n')
            f_af.write(line + '\n')
        elif i % 2 == 1:
            line = linecache.getline(file_b,i+1).strip()
            print(line + '\n')
            f_af.write(line + '\n')
    f_be.close()
    f_af.close()

if __name__== "__main__":
    ji_ou_change("before.txt","after.txt")

在这里插入图片描述

linecache 还会尝试用缓存一些信息来优化对文件的读取。它还提供了两个方法来处理缓存相关。

linecache.clearcache()

清空所有缓存,注意是所有。

linecache.checkcache(filename=None)

这个函数用于检查缓存,如果文件的大小或者修改时间有变化,会把文件原先的缓存删除,如果文件是懒加载的则保持不变。当filename为None时检查缓存中的所有文件。

以上是比较常用,当然还有其他的,大家可以自行百度~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值