关于python中readlines函数的参数hint的相关知识总结
作者:飞由于度 发布时间:2023-12-31 02:37:12
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中的内容
>>> 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}') #<是左对齐
效果
参考文章:https://www.jb51.net/article/206578.htm
来源:https://blog.csdn.net/qq_35629563/article/details/117912503
猜你喜欢
- 有。试试下面这个程序:saveip.asp<%Server.Scripttimeout = 1000On 
- 在pycharm上依次选择打开File->settings->Editor->File andCode Templates
- 引用是什么在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,替代的是,引用是符号表别名。注意在 PHP 中,变量
- 表单外观的美化很多时候,我们仅仅为了实现数据采集这个功能来使用表单,常看到的表单都是“千人一面”、毫无
- 在默认的情况下,MySQL搜索不区分大小写(但某些字符集始终区分大小写,如czech)。这意味着,如果你使用col_name LIKE
- 传统的网页BBS大多是采用CGI模式实现的,它的实现要求编程者既要掌握编程语言如Perl或C等,又要了解关于CGI模式的各项技术内容,因此要
- 无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用MySQL数
- 先看效果,实现一个图片左右摇动,在一般的H5宣传页,商家活动页面我们会看到这样的动画,小程序的动画效果不同于css3动画效果,是通过js来完
- 最近,我有机会研究对视觉设计作用的常见误解,这些误解仍然盛行于行政主管、产品主管,工程经理和市场专家中。设计团队成员如何说明这些认识是错误的
- SVG是XML来描述二维图形的语言。SVG可以构造3种类型的图形对象:矢量图形、位图图象和文字。图形对象可被组化、样式化、变形和重组,包括图
- CSS写法:overflow-y:visible本代码适用平台:IE6,IE7演示:<textarea style="wid
- 以前大家谈了很多有关打开数据库连接安全的问题,现在我再提出一种思路:使用activex dll来保护你的代码。(既可以不用为使用共享的加密软
- Css3引入了新的盒模型——弹性盒模型,该模型决定一个盒子在其他盒子中的分布方式以及如何处理可用的空间。这与XUL(火狐使用的用户交互语言)
- 函数javascript函数相信大家都写过不少了,所以我们这里只是简单介绍一下.创建函数:function f(x) {........}v
- 代码如下:Set Catalog_object= Server.CreateObject("ADO
- 1、 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。 2、 开始->程序->Oracle - OraHome81-
- 我们在建立一个大型网站的时候会有很多副页面框架模式,甚至一些细节元素都是相同的。但令人困扰的是更新它们却要费些周折,要一遍遍地反复更新每个页
- 我们用下了asp代码简单统计了下载一个文件需要的时间:<%Function DownloadTime(intFileSize
- 兼容IE6的第一步就是单独对IE进行兼容,你针对IE6所写的代码只影响IE6;有几种方法可以区分开IE6:IE特有条件注释、CSS选择器、J
- 前言最近因为工作需要要使用PHP 7,所以从网上找教程进行安装, 结果编译没问题, 安装的时候报了错误。错误如下cp -pR -f phar