ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2019-08-08 17:03:31  阅读:292  来源: 互联网

标签:文件 fr encoding 高级 rb txt seek 第六篇


目录

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

一、可读可写

  • 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()

标签:文件,fr,encoding,高级,rb,txt,seek,第六篇
来源: https://www.cnblogs.com/demiao/p/11322223.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有