zoukankan      html  css  js  c++  java
  • 八,文件操作补充

    控制文件内指针移动seek()

      只有'rt'模式下的read(n)n代表移动字符数,以外的都是表示移动字节数

      seek(offset,whence)中两个参数:

      offset代表指针移动字节数,whence代表从哪里开始移动 

        whence = 0: 参照文件开头(默认的),可以在t和b模式下使用
        whence = 1: 参照当前所在的位置,必须在b模式下用
        whence = 2: 参照文件末尾,必须在b模式下用

    文件修改的两种方式

      修改文件的方式一:

      1 将文件内容由硬盘全部读入内存
      2 在内存中完成修改
      3 将内存中修改后的结果覆盖写回硬盘

      with open('d.txt',mode='rt',encoding='utf-8') as f:
      all_data=f.read()

      with open('d.txt',mode='wt',encoding='utf-8') as f:
      f.write(all_data.replace('alex','dsb'))

      修改文件的方式二:
      1 以读的方式打开源文件,以写的方式打开一个临时文件
      2 从源文件中每读一样内容修改完毕后写入临时文件,直到源文件读取完毕
      3 删掉源文件,将临时文件重命名为源文件名
      import os

      with open('d.txt',mode='rt',encoding='utf-8') as read_f,open('.d.txt.swap',mode='wt',encoding='utf-8') as write_f:
      for line in read_f:
      write_f.write(line.replace('alex','dsb'))
      
      os.remove('d.txt')
      os.rename('.d.txt.swap','d.txt')

      方式一:
        优点: 在文件修改的过程中硬盘上始终一份数据
        缺点: 占用内存过多,不适用于大文件


      方式二:
        优点: 同一时刻在内存中只存在源文件的一行内容,不会过多地占用内存
        缺点: 在文件修改的过程中会出现源文件与临时文件共存,硬盘上同一时刻会有两份数据,即在修改的过程中会过多的占用硬盘,

  • 相关阅读:
    系统可用性
    如何在代码层实现可测试性-以《热词分析》代码为例
    python爬虫(五) ProxyHandler处理器
    python爬虫(二) urlparse和urlsplit函数
    以《淘宝网》为例,描绘质量属性的六个常见属性
    python爬虫(一)
    软件架构师如何工作
    学习进度-17 架构
    Linux中MySQL5.6编译安装与MySQL5.7二进制安装步骤
    Linux Rsync备份服务介绍及部署守护进程模式
  • 原文地址:https://www.cnblogs.com/TRKOTW/p/9513772.html
Copyright © 2011-2022 走看看