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

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

  • 相关阅读:
    【特别推荐】12款最佳的网站速度和性能测试工具
    Skeljs – 用于构建响应式网站的前端开发框架
    EpicEditor – 可嵌入的 JavaScript Markdown 编辑器
    12个学习 CSS3 网站布局设计的优秀案例
    15套流行的扁平化设计的界面素材【免费下载】
    JavaScriptOO.com – 快速找到你需要的 JS 框架
    15款最好的 jQuery Modal(模态窗口)插件
    开眼了!20个极具创意的移动界面动画效果
    ShareDrop – 苹果 AirDrop 服务的 HTML5 实现
    Furatto – 轻量,友好的响应式前端开发框架
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/13643693.html
Copyright © 2011-2022 走看看