关于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函数返回多个值的示例方法
Dec 04 Python
python实现折半查找和归并排序算法
Apr 14 Python
python3实现全角和半角字符转换的方法示例
Sep 21 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
Dec 19 Python
Python中使用Counter进行字典创建以及key数量统计的方法
Jul 06 Python
详解多线程Django程序耗尽数据库连接的问题
Oct 08 Python
python 与服务器的共享文件夹交互方法
Dec 27 Python
django框架auth模块用法实例详解
Dec 10 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
在keras里实现自定义上采样层
Jun 28 Python
Python 使用生成器代替线程的方法
Aug 04 Python
Python的Tqdm模块实现进度条配置
Feb 24 Python
详解Python为什么不用设计模式
linux中nohup和后台运行进程查看及终止
Jun 24 #Python
Python面向对象之成员相关知识总结
Jun 24 #Python
Python面向对象之内置函数相关知识总结
Jun 24 #Python
python面向对象版学生信息管理系统
Python实现学生管理系统(面向对象版)
Jun 24 #Python
Pycharm连接远程服务器并远程调试的全过程
You might like
curl实现站外采集的方法和技巧
2014/01/31 PHP
php中使用url传递数组的方法
2015/02/11 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
JS跨域总结
2012/08/30 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
JavaScript指定断点操作实例教程
2018/09/18 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
Python实现网站注册验证码生成类
2017/06/08 Python
python爬取拉勾网职位数据的方法
2018/01/24 Python
python Opencv将图片转为字符画
2021/02/19 Python
python实现高斯投影正反算方式
2020/01/17 Python
python实现字符串和数字拼接
2020/03/02 Python
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
食品营养与检测应届生求职信
2013/11/08 职场文书
学校食堂采购员岗位职责
2013/12/05 职场文书
一份报关员的职业规划范文
2014/01/08 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
2014年计生标语
2014/06/23 职场文书
就业意向书
2014/07/29 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
情感电台广播稿
2015/08/18 职场文书
技术入股合作协议书
2016/03/21 职场文书
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记