楔子

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. [C++]Yellow Cards - GYM - 102348A(Practice *) - CodeForces

    1 Problem Description Problem The final match of the Berland Football Cup has been held recently. Th ...

  2. RabbitMQ运转流程

    生产者发送消息的过程 生产者连接到RabbitMQ Broker(相当于是一个RabbitMQ服务器),建立一个连接(Connection),开启一个信道(Channel). 生产者声明一个交换器(E ...

  3. 78 leetCode 位运算解法

    按照自己的理解题目,数组内所有的组合:假如[1,2,3,4]看成1111到0000里面的排列组合,取位运算. vector<vector > subsets(vector&nums ...

  4. QFramework 使用指南 2020(六):脚本生成(4)小结与补充

    我们花了四篇文章,介绍了 QF 中的脚本生成功能. 实际上 QF 中的脚本生成是有两种的,第一种就是我们现在学习的 ViewController + Bind 模式. 这种模式是为除 UGUI 以外的 ...

  5. 计算1+2+...+n

    牛客上面一道题,闲来无事做做陶冶情操. 这一陶冶还真的陶冶出了骚操作 看一下题目吧: 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及 ...

  6. Hydra(爆破神器)使用方法

    工具介绍 hydra是一个自动化的爆破工具,暴力破解弱密码,是一个支持众多协议的爆破工具,已经集成到KaliLinux中,直接在终端打开即可. hydra支持的服务有: POP3,SMB,RDP,SS ...

  7. LoadRunner编程之文件的操作

    这篇文章主要写下LoadRunner下如何进行文件的操作. 1,文件的声明 LoadRunner不支持FILE数据类型,所以在LoadRunner中用int来声明一个文件: int MyFile; 2 ...

  8. Spring Boot 创建动态定时任务

    1,日期格式转换 //定时任务格式转换public static String convertCronTime(Date jobDate){ //https://blog.csdn.net/qq_39 ...

  9. MySQL中的触发器应用

    直接上代码: /*数据库 - udi_ems_test*********************************************************************内容:在 ...

  10. Python 解leetcode:49. Group Anagrams

    题目描述:给出一个由字符串组成的数组,把数组中字符串的组成字母相同的部分放在一个数组中,并把组合后的数组输出: 思路: 使用一个字典,键为数组中字符串排序后的部分,值为排序后相同的字符串组成的列表: ...