linecache:高效的读取文本文件
楔子
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:高效的读取文本文件的更多相关文章
- python读取文本文件
1. 读取文本文件 代码: f = open('test.txt', 'r') print f.read() f.seek(0) print f.read(14) f.seek(0) print f. ...
- (转) Java读取文本文件中文乱码问题
http://blog.csdn.net/greenqingqingws/article/details/7395213 最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中 ...
- Java读取文本文件中文乱码问题 .转载
最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中文就变成乱码.读取代码如下: List<String> lines=new ArrayList<Stri ...
- Java基础知识强化之网络编程笔记10:TCP之客户端读取文本文件服务器控制台输出
1. TCP之客户端读取文本文件服务器控制台输出 (1)客户端:(发送数据到服务端) package cn.itcast_10; import java.io.BufferedReader; impo ...
- StreamReader 读取文本文件乱码问题
解决读取文本文件乱码问题.我采取的是读取前先判断文本文件格式. StreamReader sr = new StreamReader(fullfileName, GetFileEncodeType(f ...
- python读取文本文件数据
本文要点刚要: (一)读文本文件格式的数据函数:read_csv,read_table 1.读不同分隔符的文本文件,用参数sep 2.读无字段名(表头)的文本文件 ,用参数names 3.为文本文件制 ...
- 《万能数据库查询分析器》实现使用SQL语句直接高效地访问文本文件
<万能数据库查询分析器>实现使用SQL语句直接高效地访问文本文件 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要 用SQL语句来直接访问文本文件?是在做梦吗? ...
- Java读取文本文件中文乱码问题
最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中文就变成乱码.读取代码如下: List<String> lines=new ArrayList<Stri ...
- C#读取文本文件某一行
某一时候,我们只会读取文本文件内某一行.怎样读?还是用for或foreach循环?其实操作起来,很简单,先看看文本文件,如果你也想用下面的文档来做测试,你可以在这个链接进行拷贝:<VB.NET提 ...
随机推荐
- Python常用模块安装
1. python操作MySQL数据库的依赖包MySQLdb ImportError: No module named MySQLdb 安装方式: yum install MySQL-python 2 ...
- nginx服务报错解决
403禁止访问解决 . 重要:修改配置文件使用虚拟机,否则怎么配置都不生效,添加如下用户 [root@host---- html]# ll /etc/nginx/nginx.conf -rw-r--r ...
- Pocsuite3--编写破壳CVE-2014-6271_Shellshock的POC
前言 编写破壳CVE-2014-6271_Shellshock的POC,把公开出来的路径封装起来,作为Pocsuite3的验证POC 情况1:网站无法访问,返回失败 情况2:网站可以访问,无漏洞 情况 ...
- iOS——plist的创建,数据写入与读取
iOS中plist的创建,数据写入与读取 Documents:应用将数据存储在Documents中,但基于NSuserDefaults的首选项设置除外Library:基于NSUserDefaults的 ...
- GCN入门理解
图是信息的最佳表示方式.在一个图中,有通过边(谓之“关系”)连接起来的节点(谓之“实体”).想一想,你的Facebook社交网络是个什么样子的:以你为中心连接上你的朋友们,他们又以不同的方式相互联系. ...
- Linux操作系统使用RPMBUILD命令打包RPM的详细步骤
首先,我们需要了解一些预备知识,在旧版本的CentOS中,rpmbuild工具默认的工作路径是/usr/src/redhat,因为权限原因,一般用户身份不能制作rpm软件包,只能切换到root身份才能 ...
- npm run build 报错 Error: No PostCSS Config found in...
module.exports = { plugins: [ require('autoprefixer')//自动添加css前缀 ] }; 在项目根目录新建postcss.config.js文件,添加 ...
- STM32 M0之SPI
从M3到M0,可能SPI的接口函数大致类似,但是细节略有不同 仔细观察寄存器描述,虽然个别存在差异,但是真心不知道竟然有太多的“玄机” 这次的问题主要出在了数据宽度上: 1. M3/M4的数据宽度支持 ...
- jq+js获取到table标签中的value
前端jsp页面,(这里接收后端的参数方式没有放在上面) <table> <tbody id="fPzQwQwzbrList"> <tr id=&quo ...
- 模型预测控制 MPC
使用MPC的原因: