zoukankan      html  css  js  c++  java
  • 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)方式二原理:

    ①  将文件中的数据一行一行读进内存进行修改
    ②  将修改完成的数据一次一次地写进另一个新文件内
    ③ 将原文件“删除”,再将新文件重命名为原文件 优点:不费内存,同一时刻在内存中只有一行内容 缺点:费硬盘,在修改过程中硬盘上会同时存放两份数据
  • 相关阅读:
    多测师讲解html _伪类选择器17_高级讲师肖sir
    多测师讲解html _后代选择器16_高级讲师肖sir
    多测师讲解html _组合选择器_高级讲师肖sir
    多测师讲解html _标签选择器14_高级讲师肖sir
    前端 HTML form表单标签 input标签 type属性 重置按钮 reset
    前端 HTML form表单标签 textarea标签 多行文本
    前端 HTML form表单标签 input标签 type属性 file 上传文件
    前端 HTML form表单标签 input标签 type属性 radio 单选框
    前端 HTML form表单标签 input标签 type属性 checkbox 多选框
    前端 HTML form表单目录
  • 原文地址:https://www.cnblogs.com/cui-cheng/p/13110368.html
Copyright © 2011-2022 走看看