一、 语法

readlines(hint=-1)

readlines函数用于从文件或流中一次性读取多行数据,返回数据存入一个列表中。

参数hint释义:

这个参数在readlines的官方文档说明是用于控制读取的行数,如果总行数字符数量超出了hint参数指定只会读取该参数指定的大小。但老猿经过验证,该参数取值其实还是很有意思的:

1、 在文本文件模式下,字符数量是以UNICODE编码的字符集的字符为单位来计算的,即支持多字节的字符,如中文一个汉字表示1字符,并且计算数量时剔除了换行符;

2、 在二进制模式下,字符数量是以ASCII码对应的单字节为单位来计算的,不剔除换行符,字符‘\n’占用一个字节长度;

3、 如果hint大于前n行的总字数但小于前n+1行的总字数,则执行函数会读取文件的前n+1行;

4、 当hint小于等于0时,读取整个文件的内容。

二、 案例

  1. 案例说明

以一个存储如下唐诗的文件为例来进行读取:

滁州西涧

[唐] 韦应物

独怜幽草涧边生,上有黄鹂深树鸣。

春潮带雨晚来急,野渡无人舟自横。

在测试读取时,如果发现读取的内容跟上次读取文件的内容一样时不输出,否则输出读取的字符数和对应读取内容。这样我们就可以清楚知道,读取的数量变化到什么数字时才会读取到更多的内容,也可以观察计数单位是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使用分析的更多相关文章

  1. 第9.6节 Python使用read函数读取文件内容

    一.语法 read(size=-1) read函数实际上在读取文本文件和二进制文件时,调用的是不同类的read,这是因为文本文件和二进制文件打开后返回的文件对象类型不同,同时读取的具体处理机制上也不同 ...

  2. python中逐行读取文件的最佳方式_Drupal_新浪博客

    python中逐行读取文件的最佳方式_Drupal_新浪博客 python中逐行读取文件的最佳方式    (2010-08-18 15:59:28)    转载▼    标签:    python   ...

  3. python练习六十一:文件处理,读取文件内容

    python练习六十一:文件处理,读取文件内容 假设要读取text.txt文件中内容 写文件(如果有文件,那直接调用就行,我这里自己先创建的文件) list1 = ['python','jave',' ...

  4. Python按行读取文件、写文件

    Python按行读取文件 学习了:https://www.cnblogs.com/scse11061160/p/5605190.html file = open("sample.txt&qu ...

  5. Python跳过第一行读取文件内容

    Python编程时,经常需要跳过第一行读取文件内容.比较容易想到是为每行设置一个line_num,然后判断line_num是否为1,如果不等于1,则进行读取操作.相应的Python代码如下: inpu ...

  6. python linecache模块读取文件的方法

    转自: python linecache模块读取文件 在Python中,有个好用的模块linecache,该模块允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单个文件读取多行. l ...

  7. Python+selenium之读取配置文件内容

    Python+selenium之读取配置文件内容 Python支持很多配置文件的读写,此例子中介绍一种配置文件的读取数据,叫ini文件,python中有一个类ConfigParser支持读ini文件. ...

  8. Python基于正则表达式实现文件内容替换的方法

    Python基于正则表达式实现文件内容替换的方法 本文实例讲述了Python基于正则表达式实现文件内容替换的方法.分享给大家供大家参考,具体如下: 最近因为有一个项目需要从普通的服务器移植到SAE,而 ...

  9. shell读取文件内容

           Shell脚本,执行解释速度快.代码简单易于理解.在shell代码编写过程中,经常会用到读取文件内容. 写法一: ------------------------------------ ...

随机推荐

  1. 痞子衡嵌入式:RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天给大家带来的是痞子衡的开源项目 RT-UFL. 痞子衡在近两年多的i.MXRT客户项目支持过程中,遇到的一个相当高频的问题就是制作i.MXRT下载算法.我们 ...

  2. UGC

    文章目录    4 UGC推荐        4.1 基于用户UGC标签进行推荐            4.1.1 最简单的算法(SimpleTagBased)            4.1.2 利用 ...

  3. 容器场景要选择什么 Linux 版本?

    容器的底层实现深度依赖于内核的众多特性,如 overlay 文件系统,namespace, cgroup 等,因此内核的功能和稳定性,在很大程度上,决定了整个容器PaaS平台的功能和稳定性.从 TKE ...

  4. TCP/IP协议与Socket

    1.计算机网络体系结构分层 OSI 参考模型注重"通信协议必要的功能是什么", TCP/IP 则更强调"在计算机上实现协议应该开发哪种程序". 2.TCP/IP ...

  5. 执行 yarn init报错,如何解决?

    安装yarn以后执行yarn init 命令来初始化项目 报错如下所示: 解决方法: 1.先用npm init初始化项目 在初始化的最后一步 is this ok(yes)? 输入yes回车后,可能会 ...

  6. table表格标签的属性

    table标签目前前端主流推荐HTML.CSS.JS三者分离,实际使用table标签的CSS样式代码还是采用table的style的属性和值来进行外观样式控制. 习惯样式: 1 table { 2 d ...

  7. SSH个人小结

    初学SSH的一些总结,主要来源于谷歌搜索和鸟叔的教程http://cn.linux.vbird.org/linux_server/0310telnetssh_2.php 以及阮一峰的博客http:// ...

  8. Blazor中的CSS隔离

    1.环境 VS 2019 16.9.0 Preview 1.0 .NET SDK 5.0.100 2.前言 CSS一旦生效,就会应用于全局,所以很容易出现冲突.为了解决这个问题CSS隔离就顺势而生.B ...

  9. ngx instance

    首先看下 连接池的获取以及释放 ngx_connection_t * ngx_get_connection(ngx_socket_t s, ngx_log_t *log) //从连接池中获取一个ngx ...

  10. openwrt——preinit.sh学习

    boot_hook_init() { local hook="${1}_hook" export -n "PI_STACK_LIST=${PI_STACK_LIST:+$ ...