我是靠谱客的博主 机灵红牛,最近开发中收集的这篇文章主要介绍pythonreadlineshint_第9.5节 Python的readlines读取文件内容及其参数hint使用分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、语法

readlines(hint=-1)

readlines函数用于从文件或流中一次性读取多行数据,返回数据存入一个列表中。

参数hint释义:

这个参数在readlines的官方文档说明是用于控制读取的行数,如果总行数字符数量超出了hint参数指定只会读取该参数指定的大小。但老猿经过验证,该参数取值其实还是很有意思的:

1、在文本文件模式下,字符数量是以UNICODE编码的字符集的字符为单位来计算的,即支持多字节的字符,如中文一个汉字表示1字符,并且计算数量时剔除了换行符;

2、在二进制模式下,字符数量是以ASCII码对应的单字节为单位来计算的,不剔除换行符,字符‘n’占用一个字节长度;

3、如果hint大于前n行的总字数但小于前n+1行的总字数,则执行函数会读取文件的前n+1行;

4、当hint小于等于0时,读取整个文件的内容。

二、案例

案例说明

以一个存储如下唐诗的文件为例来进行读取:

滁州西涧

[唐] 韦应物

独怜幽草涧边生,上有黄鹂深树鸣。

春潮带雨晚来急,野渡无人舟自横。

在测试读取时,如果发现读取的内容跟上次读取文件的内容一样时不输出,否则输出读取的字符数和对应读取内容。这样我们就可以清楚知道,读取的数量变化到什么数字时才会读取到更多的内容,也可以观察计数单位是ASCII字节还是UNICODE字符。

3.以文本文件方式读取

>>> def readtxtfile(n):

fp = open(r"c:temptest.txt","r")

lines=fp.readlines(n)

fp.close()

return lines

>>> def testreadtxt():

lines0=[]

for i in range(1,100):

lines1=readtxtfile(i)

if lines0!= lines1:

print(f"read {i} chacters:")

for l in lines1:print(l,end='')

lines0=lines1

print('n')

>>> testreadtxt()

read 1 chacters:

滁州西涧

read 5 chacters:

滁州西涧

[唐] 韦应物

read 13 chacters:

滁州西涧

[唐] 韦应物

独怜幽草涧边生,上有黄鹂深树鸣。

read 30 chacters:

滁州西涧

[唐] 韦应物

独怜幽草涧边生,上有黄鹂深树鸣。

春潮带雨晚来急,野渡无人舟自横。

执行截屏:

3.以二进制方式读取

>>> def readbinfile(n):

fp = open(r"c:temptest.txt","rb")

lines=fp.readlines(n)

fp.close()

return lines

>>> def testreadbin():

lines0=[]

for i in range(1,100):

lines1=readbinfile(i)

if lines0!= lines1:

print(f"read {i} chacters:")

for l in lines1:print(l.decode('GBK'),end='')

lines0=lines1

print('')

>>> testreadbin()

read 1 chacters:

滁州西涧

read 10 chacters:

滁州西涧 [唐] 韦应物

read 23 chacters:

滁州西涧 [唐] 韦应物 独怜幽草涧边生,上有黄鹂深树鸣。

read 57 chacters:

滁州西涧 [唐] 韦应物 独怜幽草涧边生,上有黄鹂深树鸣。 春潮带雨晚来急,野渡无人舟自横。

>>>

执行截屏:

本节介绍了readlines的用法,并通过案例详细分析了其参数hint的作用。

最后

以上就是机灵红牛为你收集整理的pythonreadlineshint_第9.5节 Python的readlines读取文件内容及其参数hint使用分析的全部内容,希望文章能够帮你解决pythonreadlineshint_第9.5节 Python的readlines读取文件内容及其参数hint使用分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部