第9.5节 Python的readlines读取文件内容及其参数hint使用分析
一、 语法
readlines(hint=-1)
readlines函数用于从文件或流中一次性读取多行数据,返回数据存入一个列表中。
参数hint释义:
这个参数在readlines的官方文档说明是用于控制读取的行数,如果总行数字符数量超出了hint参数指定只会读取该参数指定的大小。但老猿经过验证,该参数取值其实还是很有意思的:
1、 在文本文件模式下,字符数量是以UNICODE编码的字符集的字符为单位来计算的,即支持多字节的字符,如中文一个汉字表示1字符,并且计算数量时剔除了换行符;
2、 在二进制模式下,字符数量是以ASCII码对应的单字节为单位来计算的,不剔除换行符,字符‘\n’占用一个字节长度;
3、 如果hint大于前n行的总字数但小于前n+1行的总字数,则执行函数会读取文件的前n+1行;
4、 当hint小于等于0时,读取整个文件的内容。
二、 案例
- 案例说明
以一个存储如下唐诗的文件为例来进行读取:
滁州西涧
[唐] 韦应物
独怜幽草涧边生,上有黄鹂深树鸣。
春潮带雨晚来急,野渡无人舟自横。
在测试读取时,如果发现读取的内容跟上次读取文件的内容一样时不输出,否则输出读取的字符数和对应读取内容。这样我们就可以清楚知道,读取的数量变化到什么数字时才会读取到更多的内容,也可以观察计数单位是ASCII字节还是UNICODE字符。
3. 以文本文件方式读取
>>> def readtxtfile(n):
fp = open(r"c:\temp\test.txt","r")
lines=fp.readlines(n)
fp.close()
return lines
>>> def testreadtxt():
lines0=[]
for i in range(1,100):
lines1=readtxtfile(i)
if lines0!= lines1:
print(f"read {i} chacters:")
for l in lines1:print(l,end='')
lines0=lines1
print('\n')
>>> testreadtxt()
read 1 chacters:
滁州西涧
read 5 chacters:
滁州西涧
[唐] 韦应物
read 13 chacters:
滁州西涧
[唐] 韦应物
独怜幽草涧边生,上有黄鹂深树鸣。
read 30 chacters:
滁州西涧
[唐] 韦应物
独怜幽草涧边生,上有黄鹂深树鸣。
春潮带雨晚来急,野渡无人舟自横。
执行截屏:

3. 以二进制方式读取
>>> def readbinfile(n):
fp = open(r"c:\temp\test.txt","rb")
lines=fp.readlines(n)
fp.close()
return lines
>>> def testreadbin():
lines0=[]
for i in range(1,100):
lines1=readbinfile(i)
if lines0!= lines1:
print(f"read {i} chacters:")
for l in lines1:print(l.decode('GBK'),end='')
lines0=lines1
print('')
>>> testreadbin()
read 1 chacters:
滁州西涧
read 10 chacters:
滁州西涧 [唐] 韦应物
read 23 chacters:
滁州西涧 [唐] 韦应物 独怜幽草涧边生,上有黄鹂深树鸣。
read 57 chacters:
滁州西涧 [唐] 韦应物 独怜幽草涧边生,上有黄鹂深树鸣。 春潮带雨晚来急,野渡无人舟自横。
>>>
执行截屏:

本节介绍了readlines的用法,并通过案例详细分析了其参数hint的作用。
老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
请大家多多支持,点赞、评论和加关注!谢谢!
第9.5节 Python的readlines读取文件内容及其参数hint使用分析的更多相关文章
- 第9.6节 Python使用read函数读取文件内容
一.语法 read(size=-1) read函数实际上在读取文本文件和二进制文件时,调用的是不同类的read,这是因为文本文件和二进制文件打开后返回的文件对象类型不同,同时读取的具体处理机制上也不同 ...
- python中逐行读取文件的最佳方式_Drupal_新浪博客
python中逐行读取文件的最佳方式_Drupal_新浪博客 python中逐行读取文件的最佳方式 (2010-08-18 15:59:28) 转载▼ 标签: python ...
- python练习六十一:文件处理,读取文件内容
python练习六十一:文件处理,读取文件内容 假设要读取text.txt文件中内容 写文件(如果有文件,那直接调用就行,我这里自己先创建的文件) list1 = ['python','jave',' ...
- Python按行读取文件、写文件
Python按行读取文件 学习了:https://www.cnblogs.com/scse11061160/p/5605190.html file = open("sample.txt&qu ...
- Python跳过第一行读取文件内容
Python编程时,经常需要跳过第一行读取文件内容.比较容易想到是为每行设置一个line_num,然后判断line_num是否为1,如果不等于1,则进行读取操作.相应的Python代码如下: inpu ...
- python linecache模块读取文件的方法
转自: python linecache模块读取文件 在Python中,有个好用的模块linecache,该模块允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单个文件读取多行. l ...
- Python+selenium之读取配置文件内容
Python+selenium之读取配置文件内容 Python支持很多配置文件的读写,此例子中介绍一种配置文件的读取数据,叫ini文件,python中有一个类ConfigParser支持读ini文件. ...
- Python基于正则表达式实现文件内容替换的方法
Python基于正则表达式实现文件内容替换的方法 本文实例讲述了Python基于正则表达式实现文件内容替换的方法.分享给大家供大家参考,具体如下: 最近因为有一个项目需要从普通的服务器移植到SAE,而 ...
- shell读取文件内容
Shell脚本,执行解释速度快.代码简单易于理解.在shell代码编写过程中,经常会用到读取文件内容. 写法一: ------------------------------------ ...
随机推荐
- 没有磁盘空间 No space left on device
INSTALL 的解释文件 帮助文件 这里的 pytorch=1.0.1 torchvision=0.2.2 cudatoolkit=9.0,这个ATSS可以运行. 这里最好能够查看一下cuda的版本 ...
- 直播APP源码是如何实现音视频同步的
1. 音视频同步原理 1)时间戳 直播APP源码音视频同步主要用于在音视频流的播放过程中,让同一时刻录制的声音和图像在播放的时候尽可能的在同一个时间输出. 解决直播APP源码音视频同步问题的最佳方案 ...
- C# 集合类(四)
C# 集合类自己经常用到: 数组(Array).动态数组(ArrayList).列表(List).哈希表(Hashtable).字典(Dictionary),对于经常使用的这些数据结构,做一个总结,便 ...
- leetcode143zigzag-conversion
题目描述 字符串"PAYPALISHIRING"写成3行的Z字形的样式如下: P A H N↵A P L S I I G↵Y I R 按行读这个Z字形图案应该是 "PAH ...
- 百度开源插件echarts介绍及如何使用
前言 如果你想要用较少的代码实现比较酷炫的数据统计表,echarts是值得你考虑的一种实现方式.官网提供了很多实例供参考:http://echarts.baidu.com/examples.html. ...
- rabbitmq-参考
rabbitMQ http://lynnkong.iteye.com/blog/1699684 http://jzhihui.iteye.com/category/195005
- 第一章epoll
IO多路复用之epoll总结 1.基本知识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本.相对于select和poll来说,epoll更加灵活,没有描述符限制.epoll ...
- 极客mysql02
mysql 一条更新语句的执行过程: 1.首先客户端通过tcp/ip发送一条sql语句到server层的SQL interface 2.SQL interface接到该请求后,先对该条语句进行解析,验 ...
- linux之HTTP服务
1.基本的配置 httpd:俗称Apache (A pachey Server) /etc/httpd/conf/httpd.conf #配置文件 /etc/httpd/co ...
- docker生产——容器通信
简介 在接触docker的第一天起,大家应该就知道:docker容器使用沙箱机制,相互之间没有接口,一般情况下内部访问通过IP+端口.本地容器默认分配的IP极易发生变化,所以靠IP+端口访问的方式缺失 ...