关于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设计模式之门面模式简单示例
Jan 09 Python
Python实现带参数与不带参数的多重继承示例
Jan 30 Python
Python Excel处理库openpyxl使用详解
May 09 Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 Python
Python用Try语句捕获异常的实例方法
Jun 26 Python
Python字典对象实现原理详解
Jul 01 Python
django 捕获异常和日志系统过程详解
Jul 18 Python
python智联招聘爬虫并导入到excel代码实例
Sep 09 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
Oct 22 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
Feb 12 Python
python修改linux中文件(文件夹)的权限属性操作
Mar 05 Python
pandas按条件筛选数据的实现
Feb 20 Python
详解Python为什么不用设计模式
linux中nohup和后台运行进程查看及终止
Jun 24 #Python
Python面向对象之成员相关知识总结
Jun 24 #Python
Python面向对象之内置函数相关知识总结
Jun 24 #Python
python面向对象版学生信息管理系统
Python实现学生管理系统(面向对象版)
Jun 24 #Python
Pycharm连接远程服务器并远程调试的全过程
You might like
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
PHP命名空间和自动加载类
2016/04/03 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
基于jquery的loading效果实现代码
2010/11/05 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
js实现简单计算器
2015/11/22 Javascript
理解JavaScript中worker事件api
2015/12/25 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
vue配置接口域名方法总结
2019/05/12 Javascript
小程序实现按下录音松开识别语音
2019/11/22 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
英国领先的在线高尔夫商店:Gamola Golf
2019/11/16 全球购物
linux面试题参考答案(11)
2016/11/26 面试题
追悼会子女答谢词
2014/01/28 职场文书
会务接待方案
2014/02/27 职场文书
医德医风演讲稿
2014/05/20 职场文书
三峡人家导游词
2015/01/31 职场文书
大学生学年个人总结
2015/02/15 职场文书
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技
PostgreSQL数据库创建并使用视图以及子查询
2022/04/11 PostgreSQL
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers