八,文件操作补充

Posted trkotw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八,文件操作补充相关的知识,希望对你有一定的参考价值。

控制文件内指针移动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‘)

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


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

 























以上是关于八,文件操作补充的主要内容,如果未能解决你的问题,请参考以下文章

文件操作补充

C++(八):fstream读写操作

操作系统笔记八 文件管理

Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

Java学习记录(补充八:Date类;Java流(Stream),文件(File)和IO)

Linux应用开发:文件IO进阶