关于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 域名分析工具实现代码
Jul 15 Python
Python中input和raw_input的一点区别
Oct 21 Python
在Linux命令行终端中使用python的简单方法(推荐)
Jan 23 Python
详解如何使用Python编写vim插件
Nov 28 Python
Python学习之Anaconda的使用与配置方法
Jan 04 Python
python list是否包含另一个list所有元素的实例
May 04 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
python时间序列按频率生成日期的方法
May 14 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
IronPython连接MySQL的方法步骤
Dec 27 Python
python如何输出反斜杠
Jun 18 Python
OpenCV-Python实现油画效果的实例
Jun 08 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+jQuery实现发布微博程序 jQuery篇
2011/10/08 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
PHP简单实现无限级分类的方法
2016/05/13 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
关于捕获用户何时点击window.onbeforeunload的取消事件
2011/03/06 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
vue-router的使用方法及含参数的配置方法
2018/11/13 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
详解Python中的正则表达式的用法
2015/04/09 Python
Python实现带百分比的进度条
2016/06/28 Python
Python微信公众号开发平台
2018/01/25 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
大学团支书的自我评价分享
2013/12/14 职场文书
大学生实习思想汇报
2014/01/12 职场文书
护理专业优质毕业生自荐书
2014/01/31 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
2021/05/30 Javascript
关于EntityWrapper的in用法
2022/03/22 Java/Android