楔子

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. Python常用模块安装

    1. python操作MySQL数据库的依赖包MySQLdb ImportError: No module named MySQLdb 安装方式: yum install MySQL-python 2 ...

  2. nginx服务报错解决

    403禁止访问解决 . 重要:修改配置文件使用虚拟机,否则怎么配置都不生效,添加如下用户 [root@host---- html]# ll /etc/nginx/nginx.conf -rw-r--r ...

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

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

  4. iOS——plist的创建,数据写入与读取

    iOS中plist的创建,数据写入与读取 Documents:应用将数据存储在Documents中,但基于NSuserDefaults的首选项设置除外Library:基于NSUserDefaults的 ...

  5. GCN入门理解

    图是信息的最佳表示方式.在一个图中,有通过边(谓之“关系”)连接起来的节点(谓之“实体”).想一想,你的Facebook社交网络是个什么样子的:以你为中心连接上你的朋友们,他们又以不同的方式相互联系. ...

  6. Linux操作系统使用RPMBUILD命令打包RPM的详细步骤

    首先,我们需要了解一些预备知识,在旧版本的CentOS中,rpmbuild工具默认的工作路径是/usr/src/redhat,因为权限原因,一般用户身份不能制作rpm软件包,只能切换到root身份才能 ...

  7. npm run build 报错 Error: No PostCSS Config found in...

    module.exports = { plugins: [ require('autoprefixer')//自动添加css前缀 ] }; 在项目根目录新建postcss.config.js文件,添加 ...

  8. STM32 M0之SPI

    从M3到M0,可能SPI的接口函数大致类似,但是细节略有不同 仔细观察寄存器描述,虽然个别存在差异,但是真心不知道竟然有太多的“玄机” 这次的问题主要出在了数据宽度上: 1. M3/M4的数据宽度支持 ...

  9. jq+js获取到table标签中的value

    前端jsp页面,(这里接收后端的参数方式没有放在上面) <table> <tbody id="fPzQwQwzbrList"> <tr id=&quo ...

  10. 模型预测控制 MPC

    使用MPC的原因: