zoukankan      html  css  js  c++  java
  • 第9.5节 Python的readlines读取文件内容及其参数hint使用分析

    一、 语法
    readlines(hint=-1)
    readlines函数用于从文件或流中一次性读取多行数据,返回数据存入一个列表中。
    参数hint释义:
    这个参数在readlines的官方文档说明是用于控制读取的行数,如果总行数字符数量超出了hint参数指定只会读取该参数指定的大小。但老猿经过验证,该参数取值其实还是很有意思的:
    1、 在文本文件模式下,字符数量是以UNICODE编码的字符集的字符为单位来计算的,即支持多字节的字符,如中文一个汉字表示1字符,并且计算数量时剔除了换行符;
    2、 在二进制模式下,字符数量是以ASCII码对应的单字节为单位来计算的,不剔除换行符,字符‘ ’占用一个字节长度;
    3、 如果hint大于前n行的总字数但小于前n+1行的总字数,则执行函数会读取文件的前n+1行;
    4、 当hint小于等于0时,读取整个文件的内容。

    二、 案例

    1. 案例说明

    以一个存储如下唐诗的文件为例来进行读取:
    滁州西涧
    [唐] 韦应物
    独怜幽草涧边生,上有黄鹂深树鸣。
    春潮带雨晚来急,野渡无人舟自横。

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

    >>> def readtxtfile(n):
        fp = open(r"c:	emp	est.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('
    ')
    		  
    >>> testreadtxt()
    		  
    read 1 chacters:
    滁州西涧
    
    read 5 chacters:
    滁州西涧
    [唐] 韦应物
    
    read 13 chacters:
    滁州西涧
    [唐] 韦应物
    独怜幽草涧边生,上有黄鹂深树鸣。
    
    read 30 chacters:
    滁州西涧
    [唐] 韦应物
    独怜幽草涧边生,上有黄鹂深树鸣。
    春潮带雨晚来急,野渡无人舟自横。
    

    执行截屏:
    在这里插入图片描述
    3. 以二进制方式读取

    >>> def readbinfile(n):
        fp = open(r"c:	emp	est.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的作用。

    老猿Python,跟老猿学Python!
    博客地址:https://blog.csdn.net/LaoYuanPython

    请大家多多支持,点赞、评论和加关注!谢谢!

  • 相关阅读:
    第10组 Beta冲刺(2/5)
    第10组 Beta冲刺(1/5)
    第10组 Alpha事后诸葛亮
    3月7-第十次机试课记录
    3月5-第九次机试课记录
    3月2-第八次机试课记录
    3月1-第六次机试课记录
    2月28-第五次机试课记录
    STL
    2月27-第四次机试课记录
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/13643693.html
Copyright © 2011-2022 走看看