zoukankan      html  css  js  c++  java
  • 第六篇、文件处理之文件的高级应用

    第六篇、文件处理之文件的高级应用

    一、可读可写

    • r+:在后面追加

    • w+:清空文件的功能是w提供的 更加慎用

    • a+:a有追加的功能,指针在文件的末尾,没啥用

    二、文件内指针移动

    需要对文件内的指针移动的操作才能对文件的内容进行修改

    硬盘上没有修改的说法,硬盘只能覆盖,新内容覆盖旧内容

    with open('36r.txt', 'r+t', encoding='utf-8') as fr:
        fr.readline()
        fr.write('nick 真衰呀')  # 写在文件的最后一行
    

    三、文件的内置方法

    • seek()

    • tell()

    • read(n)

    • truncate(n)

    1. seek()移动指针方法

      seek(offset,whence): offset代表文件指针的偏移量,偏移量的单位是字节个数,whence可以写0,1,2;0相当于文件头开始;1相当于当前文件所在位置;2相当于文件末尾

      # seek()
      with open('36r.txt', 'rb') as fr:
          print(f"fr.seek(4, 0): {fr.seek(4, 0)}")  # 0相当于文件头开始;1相当于当前文件所在位置;2相当于文件末尾
          # fr.seek(0,2)  # 切换到文件末尾
      
    2. tell()统计从头到当前位置的字符的方法

    # tell()
    with open('36r.txt', 'rb') as fr:
        fr.seek(4, 0)
        print(f"fr.tell(): {fr.tell()}")
    
    1. read(n)读取从文件到指针当前的所有内容

    在b模式,读取到n个字节的内容,不用加encoding参数

    在t模式,读取到n个字符的内容

    # read()
    with open('36r.txt', 'rt', encoding='utf-8') as fr:
        print(f"fr.read(3): {fr.read(3)}")
    
    1. truncate(n)在t模式(b模式)清空文件的第n个字符(字节)后面的内容**打开文件方式必须可写,不能用w和w+等方法,因为这些方法会清空文件,这个truncate方法要在r+或者a或者a+等模式下用,永远都是从文件内容的开头数起。如果不加参数,就会清空文件

    课后练习的测试总结经验

    1. python 报错:ValueError: binary mode doesn't take an encoding argument

    ​ 在运行文件操作相关功能时报错:ValueError: binary mode doesn't take an encoding argument

    上代码:

    >>> fp = open("a.txt","rb+",encoding="utf-8")#rb+操作时不支持指定encoding参数
    
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: binary mode doesn't take an encoding argument
    

    原因分析:rb+操作时不支持指定encoding参数

    解决:

    改成如下方法即可

    >>> fp = open("a.txt","rb+")#注意:a.txt文件编码格式需为“ANSI”
    >>> fp.close()
    
  • 相关阅读:
    9.2模拟题解
    NOI1995 石子合并
    NOIP2012 借教室
    织梦内页读取栏目banner图
    mysql数据库版本引发的问题
    简单修改hosts文件加快打开网页速度
    详细剖析电脑hosts文件的作用和修改
    内部标签样式
    织梦让当前的子栏目拥有特殊的样式
    织梦获取单个顶级栏目名
  • 原文地址:https://www.cnblogs.com/demiao/p/11322223.html
Copyright © 2011-2022 走看看