文件处理

Posted ageliu

tags:

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

一、文件模式

  简述t:文本模式,b:二进制模式

二、文件的打开方式

f=open(r"a.txt","wt",encoding="utf-8")

f.read()

f.close() #关闭操作系统打开的文件

del f #回收应用级别的变量,不能在close前使用不然会使操作系统长时间无法关闭文件会白白占用资源;在Python中不用使用del因为Python的垃圾回收机制帮我们做了。

 

上下文管理:

  with open("a.txt","wt",encoding="utf-8") as f:

    f.read()

 

三种读写文件的方式:

  r:只读,读取的文件必须存在否则会报错

  w:只写,读取的文件不存在则会创建,存在则会清空原内容再写入

  a: 追加写,读取的文件不存在则会创建,存在则会在原内容的末尾再写入

------------------------------------

  r+:读加写

  w+:读加写

  a+:读加写

------------------------------------

 f.read() 读取文件的所有内容

 f.readline() 一行一行的读取文件的内容,并将光标放在第二行的首部

 f.readlines() 一行行将文件的内容都写入到列表中并打印出来

 

 f.write()

 f.writeline()

 f.writelines()

 

三、文件内部的光标移动seek

  简述:在文本模式下光标移动的是字符数而在b模式下是以字节数移动的,在seek中有offest、whence两个参数其中offest表示的是移动的字节数;whence有0、1、2三种状态其中0在b和t模式下都可使用状态为在文件的首部开始移动,1和2都必须在b模式写使用1状态是在文件光标当前位置一移动、2状态是在文件的末尾开始移动。

四、文件的修改

一、将所有的内容读入内存后一次性修改后再将修改过后的内容放入另一个与源文件同名的文件并删除源文件。

import os

with open(a.txt,"r",encoding="utf-8") as read_f,  open(a.txt.swap,w,encoding="utf-8") as write_f:
      data=read_f.read() #全部读入内存,如果文件很大,会很卡
      data=data.replace(alex,SB) #在内存中完成修改

      write_f.write(data) #一次性写入新文件

os.remove(a.txt)
os.rename(a.txt.swap,a.txt) 

 

优缺点:对硬盘占用较少但占用大量的内存不适用大文件。

二、将所有的内容一行行的读取修改后一行行写入另一个同名的新文件,在将源文件删除

import os

with open(a.txt,"r",encoding="utf-8") as read_f,
  open(a.txt.swap,w,encoding="utf-8") as write_f:
    for line in read_f:
    line=line.replace(alex,SB)
    write_f.write(line)

os.remove(a.txt)
os.rename(a.txt.swap,a.txt)

 

优缺点:对硬盘占用较大但对内存占用较少。

 

以上是关于文件处理的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

处理屏幕旋转上的片段重复(带有示例代码)

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

你如何在 python 中处理 graphql 查询和片段?

如何有效地打开 30gb 的文件并处理其中的片段而不减慢速度?

是否有在单个活动中处理多个片段的 Android 设计模式?