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

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

一、可读可写

  • 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()
posted @ 2019-08-08 16:54  得淼  阅读(273)  评论(0编辑  收藏  举报