关于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实现115网盘自动下载的方法
Sep 30 Python
编写Python脚本来实现最简单的FTP下载的教程
May 04 Python
Python标准库之Sys模块使用详解
May 23 Python
Python实现进程同步和通信的方法
Jan 02 Python
python编程培训 python培训靠谱吗
Jan 17 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
Feb 01 Python
python中的for循环
Sep 28 Python
python中单下划线(_)和双下划线(__)的特殊用法
Aug 29 Python
Python类成员继承重写的实现
Sep 16 Python
Python安装Bs4的多种方法
Nov 28 Python
python 装饰器的基本使用
Jan 13 Python
python正则表达式re.search()的基本使用教程
May 21 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微框架Dispatch简介
2014/06/12 PHP
php单一接口的实现方法
2015/06/20 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
详解Vue-cli代理解决跨域问题
2017/09/27 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
python查看微信好友是否删除自己
2016/12/19 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
python打开音乐文件的实例方法
2020/07/21 Python
市场营销毕业生自荐信
2013/11/23 职场文书
党校学习思想汇报
2014/01/06 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
2014银行授权委托书样本
2014/10/04 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
公务员政审材料范文
2014/12/23 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
24年收藏2000多部退役军用电台
2022/02/18 无线电