关于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实现的几个常用排序算法实例
Jun 16 Python
python使用BeautifulSoup分析网页信息的方法
Apr 04 Python
初步解析Python下的多进程编程
Apr 28 Python
python 专题九 Mysql数据库编程基础知识
Mar 16 Python
Python 操作文件的基本方法总结
Aug 10 Python
微信跳一跳python自动代码解读1.0
Jan 12 Python
Python读取本地文件并解析网页元素的方法
May 21 Python
python简单实现AES加密和解密
Mar 28 Python
用Python调用win命令行提高工作效率的实例
Aug 14 Python
Python 异步协程函数原理及实例详解
Nov 13 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
Feb 29 Python
Python猫眼电影最近上映的电影票房信息
Sep 18 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加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
PHP 基本语法格式
2009/12/15 PHP
php实现的双向队列类实例
2014/09/24 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
javascript Array对象基础知识小结
2010/11/16 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
四风存在的原因分析
2014/02/11 职场文书
水电工岗位职责
2014/02/12 职场文书
给校长的建议书600字
2014/05/15 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
CSS布局之浮动(float)和定位(position)属性的区别
2021/09/25 HTML / CSS
win10搭建配置ftp服务器的方法
2022/08/05 Servers