楔子

linecache是一个用于读取文本文件的库,它的特点是可以读取文件指定的行,并且还会放到内存中缓存起来。当再次读取文件相同的行时,会从缓存中获取,而不会从磁盘上重新读取,可以省去相应的IO操作。关于读取文件,其实使用内置函数open是足够的,但是有些时候使用linecache会更方便一些。下面我们就来看看用法。

文本如下:

读取文件指定的行

linecache内部有一个getline方法,可以用来读取文件指定的行。

import linecache
# 表示读取文件1.txt的第2行
print(linecache.getline("1.txt", 2))
"""
晨意微寒秋渐深,侧伴无事俏佳人 """
# 由于结尾的换行符,所以会有一个空行

我们知道索引是从0开始的,但是对于getline来说,就是按照文件的行号来的。比如1,就表示第一行。另外,使用getline的时候,如果指定读取的行超过了文件的最大行数也不会报错,而是返回空字符串。

import linecache
# 上面的1.txt只有6行,但是我们读取第8行
print(linecache.getline("1.txt", 8) == "") # True # 我们看到没有报错,而是返回了空字符串

读取文件全部的行

getline是读取指定的行,而getlines则是读取全部的行

import linecache
from pprint import pprint
pprint(linecache.getlines("1.txt"))
"""
['你怎么这么熟练啊!\n',
'晨意微寒秋渐深,侧伴无事俏佳人\n',
'为了我,你就永远当个废物吧;为了能让我好好努力,就一生,都成为我的负担吧。\n',
'我喜欢这个世界上最糟糕的你,最喜欢了。\n',
'第一次,有了喜欢的人,还得到了一生的挚友,两份喜悦相互重叠,这双重的喜悦又带来了更多更多的喜悦\n',
'是我,是我先,明明都是我先来的,接吻也好,拥抱也好,还是喜欢上那家伙也好\n']
"""

我们看到使用getlines将文件内容全部读取出来了,相当于使用open函数读取之后再调用readlines()方法。

有时候我们在统计文件的行数时,就可以使用这个方法,会方便一些。

import linecache
print(len(linecache.getlines("1.txt"))) # 6

linecache:高效的读取文本文件的更多相关文章

  1. python读取文本文件

    1. 读取文本文件 代码: f = open('test.txt', 'r') print f.read() f.seek(0) print f.read(14) f.seek(0) print f. ...

  2. (转) Java读取文本文件中文乱码问题

    http://blog.csdn.net/greenqingqingws/article/details/7395213 最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中 ...

  3. Java读取文本文件中文乱码问题 .转载

    最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中文就变成乱码.读取代码如下: List<String> lines=new ArrayList<Stri ...

  4. Java基础知识强化之网络编程笔记10:TCP之客户端读取文本文件服务器控制台输出

    1. TCP之客户端读取文本文件服务器控制台输出 (1)客户端:(发送数据到服务端) package cn.itcast_10; import java.io.BufferedReader; impo ...

  5. StreamReader 读取文本文件乱码问题

    解决读取文本文件乱码问题.我采取的是读取前先判断文本文件格式. StreamReader sr = new StreamReader(fullfileName, GetFileEncodeType(f ...

  6. python读取文本文件数据

    本文要点刚要: (一)读文本文件格式的数据函数:read_csv,read_table 1.读不同分隔符的文本文件,用参数sep 2.读无字段名(表头)的文本文件 ,用参数names 3.为文本文件制 ...

  7. 《万能数据库查询分析器》实现使用SQL语句直接高效地访问文本文件

    <万能数据库查询分析器>实现使用SQL语句直接高效地访问文本文件 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要    用SQL语句来直接访问文本文件?是在做梦吗? ...

  8. Java读取文本文件中文乱码问题

    最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中文就变成乱码.读取代码如下: List<String> lines=new ArrayList<Stri ...

  9. C#读取文本文件某一行

    某一时候,我们只会读取文本文件内某一行.怎样读?还是用for或foreach循环?其实操作起来,很简单,先看看文本文件,如果你也想用下面的文档来做测试,你可以在这个链接进行拷贝:<VB.NET提 ...

随机推荐

  1. lnmp搭建-手动版

    参照链接:http://blog.csdn.net/bravemelon/article/details/64925499 centOS 下安装 Nginx yum -y groupinstall & ...

  2. Pocsuite3--编写破壳CVE-2014-6271_Shellshock的POC

    前言 编写破壳CVE-2014-6271_Shellshock的POC,把公开出来的路径封装起来,作为Pocsuite3的验证POC 情况1:网站无法访问,返回失败 情况2:网站可以访问,无漏洞 情况 ...

  3. 82. 删除排序链表中的重复元素 II

    # 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字,比如: # 输入: 1->2->3->3->4->4->5 # 输出: 1 ...

  4. GPIO相关寄存器描述和怎么配置

    总寄存器图

  5. JavaScript基础------JavaScript语法

    js的注释与分号 // 单行注释 /**/多行注释 ctrl +shift +/ 语句结束使用分号,如果省略,则由解析器确定语句的结尾js语法 1.变量.函数名.操作符都区分大小写 2.标识符 (1) ...

  6. Jmeter安装及配置(傻瓜模式)

    接下来将以傻瓜模式进行安装,跟着流程走,没错的~ 1.首先进入到apache官网https://www.apache.org/dist/jmeter/binaries下载Windows版本JMeter ...

  7. 公钥加密-DES-RSA

    公理 双方使用同一规则加密---------密钥(对称加密算法DES)data encryption standard 最大问题 双方一起制定--------办法:密钥交换算法,不用直接传递密钥--- ...

  8. vue 结构赋值

  9. hdoj3534(树形dp,求树的直径的条数)

    题目链接:https://vjudge.net/problem/HDU-3534 题意:给出一棵树,求树上最长距离(直径),以及这样的距离的条数. 思路:如果只求直径,用两次dfs即可.但是现在要求最 ...

  10. 图片压缩java工具类

    package com.net.util; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.Fil ...