关于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基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
基于python实现KNN分类算法
Apr 23 Python
python使用百度文字识别功能方法详解
Jul 23 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
python常见字符串处理函数与用法汇总
Oct 30 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
基于python实现删除指定文件类型
Jul 21 Python
在pycharm中文件取消用 pytest模式打开的操作
Sep 01 Python
Python urlopen()参数代码示例解析
Dec 10 Python
详解Python为什么不用设计模式
linux中nohup和后台运行进程查看及终止
Jun 24 #Python
Python面向对象之成员相关知识总结
Jun 24 #Python
Python面向对象之内置函数相关知识总结
Jun 24 #Python
python面向对象版学生信息管理系统
Python实现学生管理系统(面向对象版)
Jun 24 #Python
Pycharm连接远程服务器并远程调试的全过程
You might like
MySQL数据源表结构图示
2008/06/05 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
js控制表单不能输入空格的小例子
2013/11/20 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
jQuery操作cookie
2016/08/08 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
angular第三方包开发整理(小结)
2018/04/19 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
11个并不被常用但对开发非常有帮助的Python库
2015/03/31 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
编写python代码实现简单抽奖器
2020/10/20 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
警示教育活动总结
2014/05/05 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
私人委托书格式
2014/09/10 职场文书
建党伟业电影观后感
2015/06/01 职场文书
独生子女证明范本
2015/06/19 职场文书
人身损害赔偿协议书
2016/03/22 职场文书
图文详解nginx日志切割的实现
2022/01/18 Servers