zoukankan      html  css  js  c++  java
  • 文件的三种打开方式知识点回顾

    文件的三种打开模式

    文件的基本操作方式有三种:

    r模式:read

    w模式:write

    a模式:append

    文件读写内容的格式有两种:

    t模式:text

    b模式:bytes

    文件的打开模式需要和文件读写的格式一起使用,比如通过read模式读取文件需要指定是以text还是以二进制的方式读取文件,如果不指定默认是t模式。

    文件的绝对路径与相对路径

    文件的绝对路径是从盘符开始的路径,相对路径是从当前执行文件所在的文件夹开始的路径,在open函数中文件的路径可以写相对路径也可以写绝对路径。

    with管理文件上下文

    打开文件我们使用with open而不使用open,因为open方法只打开文件而不负责关闭文件,而with 提供了一种自动关闭文件的机制,在文件运行结束后可以自动关闭文件。

    一、r模式

    readable()判断文件是否可读,返回bool值,不过该方法只能判断文件是否可读,如果文件不存在会报错。

    read模式是只读模式,如果指定打开的文件不存在会报错。

    with open('1.text','r',encoding='utf8') as fr:
        content = fr.read()
        print(content)
        
    

    .read()方法会一次将所有的文件全部读入到内存,如果文件较大会导致内存占用过大的问题,为了避免这种情况的出现我们可以用.readline()逐行读取内容,readline()的特点是每调用一次读取一行,文件是迭代器对象,每调用一次都会接着前面的内容继续迭代。

    with open('1.text','r',encoding='utf8') as fr:
        for i in range(10):
            print(fr.readline())
    

    readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。

    如果碰到结束符 EOF 则返回空字符串。

    with open('1.text','r',encoding='utf8') as fr:
    
        for line in fr.readlines():
            lin = line.strip()#我们可以通过for循环对文本内容进行处理
            print(lin)
    

    read和readline可以指定读取的内容的长度,如read(3),就是读取三个字符。readlines则会以列表的形式将换行符前面的所有内容读出来(始终括号内数字的长度小于读取内容的长度)。

    二、w模式

    write模式是只写模式,该模式打开文件时会先将文件里的内容删除,然后再写入,如果文件不存在就将自动创建一个文件然后再将内容写入。

    with open('2.text','w',encoding='utf8') as fw:
        fw.write(content1)
    

    三、a模式

    append模式是和write模式类似,相同点是都是只写,且如果文件不存在都会先创建文件然后再写入。不同点是append不会删除已存在的文件内容,而是在已存在的内容后面写入内容。

    with open('2.text','a',encoding='utf8') as fa:
        fa.write(content1)
    

    四、文件二进制方式读取文件

    上面文件的读写都是text模式下的,下面我们了解一下b模式下文件的读取,b模式对文件的格式没有要求,不论是文本文件还是视频音频都可以采用b模式进行读取,由于b模式是采用二进制的方式对数据进行的读写操作所以不能设置编码格式,如果我们用b模式去读取文件,就要用b模式去写入文件这样才能完好的还原我们所读取的数据。

    with open('1.text','rb') as fr:
        content1 = fr.read()
    
    with open('2.text','ab') as fa:
        fa.write(content1)
    
    
  • 相关阅读:
    灾备架构图
    Dashboard有什么用
    第一次使用Docker的完整过程
    网页端的消息接收方式
    我理解中的应用架构
    数字化转型模型
    工业4.0的下一个十年
    一文读懂华为全屋智能一文读懂华为全屋智能
    支付总架构解析
    spring boot:shardingsphere+druid整合seata分布式事务(spring boot 2.3.3)
  • 原文地址:https://www.cnblogs.com/ghylpb/p/12115473.html
Copyright © 2011-2022 走看看