关于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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
教你用Python写安卓游戏外挂
Jan 11 Python
python3+PyQt5使用数据库窗口视图
Apr 24 Python
django框架自定义模板标签(template tag)操作示例
Jun 24 Python
python 使用socket传输图片视频等文件的实现方式
Aug 07 Python
python3 求约数的实例
Dec 05 Python
三个python爬虫项目实例代码
Dec 28 Python
Python函数式编程实例详解
Jan 17 Python
Python绘制动态水球图过程详解
Jun 03 Python
python中return如何写
Jun 18 Python
在keras中对单一输入图像进行预测并返回预测结果操作
Jul 09 Python
Pytorch中的学习率衰减及其用法详解
Jun 05 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下MYSQL limit的优化
2008/01/10 PHP
PHP常用技巧汇总
2016/03/04 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
js操作textarea 常用方法总结
2012/12/03 Javascript
JavaScript实现多维数组的方法
2013/11/20 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
详解关闭令人抓狂的ESlint 语法检测配置方法
2019/10/28 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
python中enumerate的用法实例解析
2014/08/18 Python
Python jieba库用法及实例解析
2019/11/04 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
什么是Rollback Segment
2013/04/22 面试题
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
工会主席岗位责任制
2014/02/11 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
人力资源管理求职信
2014/08/07 职场文书
2015年元旦演讲稿
2014/09/12 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
王亚平太空授课观后感
2015/06/12 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS