关于python中readlines函数的参数hint的相关知识总结


Posted in Python onJune 24, 2021

readlines的帮助信息

>>> fr=open('readme.txt')
>>> help(fr.readlines)
Help on built-in function readlines:
 
readlines(hint=-1, /) method of _io.TextIOWrapper instance
    Return a list of lines from the stream.
    
    hint can be specified to control the number of lines read: no more
    lines will be read if the total size (in bytes/characters) of all
    lines so far exceeds hint.

Google翻译

_io.TextIOWrapper 实例的 readlines(hint=-1, /) 方法
     从流中返回行列表。
    
     可以指定 hint 来控制读取的行数:如果到目前为止所有行的总大小(以字节/字符为单位)超过hint,则不会读取更多行。

readme.txt中的内容

关于python中readlines函数的参数hint的相关知识总结

>>> f=open('readme.txt')
>>> f.readlines()
['1\n', '22\n', '\n', '333']

为了进一步搞清楚hint,我写了一个函数来演示

readlines函数代码

def readlinesFile(filename,nbyte):
    '''
    探索f.readlines(i)中i的作用,典型的调用形式:
    readlinesFile('readme.txt',12)
    '''
    for i in range(nbyte):
        f=open(filename)
        ss=f.readlines(i)                       
        if i==0:#如果hint=0,先把每一个元素输出                
            textline=len(ss)#文件的总行数
            ntotalbyte=0#文件的总字数
            nwritebyte=0#已经写了的字节数
            for j in range(textline):
                #nwritebyte=ntotalbyte#已经写了的字节数
                ntotalbyte=ntotalbyte+len(ss[j])
                rowbyte=0#已经写了的新行的字节数,用来记一行已经输出的字节个数
                while nwritebyte<ntotalbyte:#当已写字节<总字节数
                    print(f'{nwritebyte+1}:',repr(ss[j][rowbyte])) #repr是为了输出换行符
                    nwritebyte=nwritebyte+1
                    rowbyte=rowbyte+1
            print(f'行数={textline},字数={ntotalbyte}')
        print(f'f.readlines{i}={ss}') 
        f.close()

输出

>>> readlinesFile('readme.txt',12)
1: '1'
2: '\n'
3: '2'
4: '2'
5: '\n'
6: '\n'
7: '3'
8: '3'
9: '3'
行数=4,字数=9
f.readlines0=['1\n', '22\n', '\n', '333']
f.readlines1=['1\n']
f.readlines2=['1\n', '22\n']
f.readlines3=['1\n', '22\n']
f.readlines4=['1\n', '22\n']
f.readlines5=['1\n', '22\n', '\n']
f.readlines6=['1\n', '22\n', '\n', '333']
f.readlines7=['1\n', '22\n', '\n', '333']
f.readlines8=['1\n', '22\n', '\n', '333']
f.readlines9=['1\n', '22\n', '\n', '333']
f.readlines10=['1\n', '22\n', '\n', '333']
f.readlines11=['1\n', '22\n', '\n', '333']

总结:

1.hint 是要输出显示的字节数

2.hint 默认等于-1,就是以列表的形式读出所有内容

3.hint = 0时,效果等同于-1

4.hint 所指的字节数正好是换行符的话,则实际输出是 hint+1

更花哨的readlinesFile

def readlinesFile(filename,nbyte):
    '''
    探索f.readlines(i)中i是指什么,典型的调用形式:
    readlinesFile('readme.txt',12)
    '''
    specialByte=[]#存储特殊的字节数用
    for i in range(nbyte):
        with open(filename) as f:#使用with语句就可以不使用f.close()了
            ss=f.readlines(i)                       
            if(i==0):#如果hint=0,先把每一个元素输出
                print(ss)
                textline=len(ss)#文件的总行数
                ntotalbyte=0#文件的总字数
                nwritebyte=0#已经写了的字节数
                for j in range(textline):
                    #nwritebyte=ntotalbyte#已经写了的字节数
                    ntotalbyte=ntotalbyte+len(ss[j])
                    rowbyte=0#已经写了的新行的字节数,用来记一行已经输出的字节个数
                    while nwritebyte<ntotalbyte:#当已写字节<总字节数
                        if(nwritebyte is ntotalbyte-1):
                            specialByte.append(nwritebyte)
                            print(f'\033[0;31;47m{nwritebyte+1:2d}:',repr(ss[j][rowbyte]),'\033[0m')#\033[0m是字体和背景颜色设置,注意可能需要其他库的支持
                        else:
                            print(f'{nwritebyte+1:2d}:',repr(ss[j][rowbyte])) 
                        nwritebyte=nwritebyte+1     
                        rowbyte=rowbyte+1
                print(f'\033[0;31;40m行数={textline:2d},字数={ntotalbyte:2d}\033[0m')
            if i in specialByte:
                print(f'\033[0;31;47mf.readlines{i:<2d}={ss}\033[0m') #<是左对齐
            else:
                print(f'f.readlines{i:<2d}={ss}') #<是左对齐

效果

关于python中readlines函数的参数hint的相关知识总结

到此这篇关于关于python中readlines函数的参数hint的相关知识总结的文章就介绍到这了,更多相关python readlines函数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python基础教程之元组操作使用详解
Mar 25 Python
Python常用模块介绍
Nov 21 Python
详解python进行mp3格式判断
Dec 23 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
详解Python 调用C# dll库最简方法
Jun 20 Python
python网络编程 使用UDP、TCP协议收发信息详解
Aug 29 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
如何获取Python简单for循环索引
Nov 21 Python
自定义Django默认的sitemap站点地图样式
Mar 04 Python
Python爬虫实例——爬取美团美食数据
Jul 15 Python
python调用百度AI接口实现人流量统计
Feb 03 Python
Python数据分析入门之教你怎么搭建环境
May 13 Python
详解Python为什么不用设计模式
linux中nohup和后台运行进程查看及终止
Jun 24 #Python
Python面向对象之成员相关知识总结
Jun 24 #Python
Python面向对象之内置函数相关知识总结
Jun 24 #Python
python面向对象版学生信息管理系统
Python实现学生管理系统(面向对象版)
Jun 24 #Python
Pycharm连接远程服务器并远程调试的全过程
You might like
PHP多个版本的分析解释
2011/07/21 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
JavaScript 计算当天是本年本月的第几周
2009/03/22 Javascript
javascript new后的constructor属性
2010/08/05 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
2015/09/07 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
vue全局组件与局部组件使用方法详解
2018/03/29 Javascript
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
python如何实现反向迭代
2018/03/20 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
set在python里的含义和用法
2019/06/24 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
windows支持哪个版本的python
2020/07/03 Python
python 星号(*)的多种用途
2020/09/21 Python
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
解释一下钝化(Swap out)
2016/12/26 面试题
大学生社团活动总结
2014/04/26 职场文书
食品安全处置方案
2014/06/14 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
大连导游词
2015/02/12 职场文书
八一建军节主持词
2015/07/01 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers
分享python函数常见关键字
2022/04/26 Python