• python开发学习day10 (文件指针; 文本修改)


    2020-06-12                                             

    目录:

    一、控制文件指针移动

    1.1  文件指针移动的单位

    1.2  主动/单纯控制指针的移动

    二、文本的修改

    一、控制文件指针移动

    1.1  文件指针移动的单位

    只有在t模式下的read(n)中,n指的是字符个数
    其余所有的主动/被动的文件指针移动都是以bytes为单位
    如:
    with open(r'a.txt', mode = 'rt', encoding = 'utf-8') as f:
        f.read(2)  # 这里的2指的是2个字符

    1.2  主动/单纯控制指针的移动 f.seek(x,y)

    f.seek(x,y)中,x指移动字节的个数,y代表模式(有0,1,2三种模式)

      ①  0模式:参照物是文件的开头,可以在t、b模式下使用

    with open('d.txt', mode='rt', encoding='utf-8') as f:
        f.seek(3, 0)
        print(f.tell())  # >>>3   f.tell()是计算从文件开头算起,当前指针的位置

      ②  1模式:参照物为当前位置,只能在b模式下使用

    with open('d.txt', mode='rb') as f:
        f.read(1)
        print(f.tell()) # 当前位置
        f.seek(2,1)     # 在当前位置往后移动2个字节
        print(f.tell()) 

      ③  2模式:参照物为文件末尾,只能在b模式下使用

    with open('d.txt', mode='rb') as f:
         f.seek(-3, 2)  # 指针移动到倒数第三个字符
         print(f.tell())

    二、文本的修改

    硬盘的数据没有改的概念,所谓的修改都是以新数据覆盖旧的数据来实现改变的
    文件可以被修改,但是都是靠内存模拟实现的
    具体来讲,有两种方法可以实现文件的修改操作

    (1)方式一原理:

    ①  将硬盘的内容全部读入内存
    ②  在内存中实现将内容一次性修改完毕
    ③  将修改完的内容重新覆盖回原文件
    优点:不费硬盘,硬盘数据只有一份
    缺点:费内存,当文件过大时内存占用过大

    (2)方式二原理:

    ①  将文件中的数据一行一行读进内存进行修改
    ②  将修改完成的数据一次一次地写进另一个新文件内
    ③ 将原文件“删除”,再将新文件重命名为原文件 优点:不费内存,同一时刻在内存中只有一行内容 缺点:费硬盘,在修改过程中硬盘上会同时存放两份数据
  • 相关阅读:
    Javascript 生成全局唯一标识符 (GUID,UUID)
    nginx 与location语法详解
    nginx的安装与使用
    Linux上python3的安装和使用
    Linux上Redis安装和简单操作
    MySQL + centos +主从复制
    web服务基础
    linux系统基础优化及高级操作命令
    vim编辑
    Linux的基本命令
  • 原文地址:https://www.cnblogs.com/cui-cheng/p/13110368.html
Copyright © 2020-2023  润新知