一文带你掌握Python文件打开模式

liftword3周前 (12-05)技术文章19

Python文件处理功能颇为便捷流畅,仅需运用open函数便可轻松实现文件的生成或者信息读取过程。然而,对于初学者而言,困扰他们最大的难题也许在于其多样化的打开模式。乍一看各类文件格式众多,着实令人眼花缭乱、无从入手。实际上,尽管此类情况看似复杂,却可归纳出如下几大要点,而各类文件打开模式皆是由这些要点交叉组合所构成:

  1. r: 表示 read,其含义表示读取,如果只有其一个字母则表示只读且文件指针在文件开头位置,也就是会读取文件所有内容,同时也是 open 默认的模式文件不存在会报错
  2. w:表示 write,表示写入且指针在文件头,这意味着如果单独使用 w 模式,则会覆盖已存在文件,文件不存在则创建
  3. a: 表示 append,表示追加,所以,对于一个已经存在的文件,使用追加模式,会将指针移动到文件末尾,新的内容会被写到已有内容之后,文件不存在会创建,单独使用a 模式只能写,不能读
  4. b:表示 blob,其表示二进制内容,不能单独使用,其作用是为了表示 r 或 w 两种类型方式,常用来读写音视频等二进制文件
  5. +:表示读写模式,不能单独使用,需要配合 r,w,a 一起表示文件可读可写,但是需要注意文件指针位置的问题。

需要注意的是,r, w, a 三种模式不能彼此组合,如果需要进行读写操作,需要使用 r+, a+,w+ 等操作,操作二进制再加字母 b。

所以现在就可以轻松解读以下操作组合(示例):

rb:以二进制只读方式打开文件,且指针在开头。

wb:以二进制写入,文件存在则覆盖,不存在则写入。

ab+:以二进制追加文件内容,指针在文件尾。

rb+: 可读写二进制内容

r+: 可读可写,指针在文件头

差异对比

  1. 现在虽然可以轻松阅读和组装读写模式,但是不同的组合还有一些差异需要仔细甄别。

r+:读写文件,但是不会创建文件,写内容时,如果存在内容会被覆盖

w+:新建文件,但是文件存在内容时会清空文件

a+:同 r+,可读写文件,但是需要注意的是a+的时候指针在末尾,所以不会清空内容,但是如果直接读取也会为空,如果需要读取已有文件需要使用 seek 方法调整指针的位置。

  1. 文件不存在会创建文件的模式: a, a+, w, w+
  2. 文件在操作完成后一定要记得 close 关闭,使用 with 方式的可以忽略, 否则可能会导致内容丢失。
  3. 写完的内容,如果立马需要读取,需要调用 flush,否则可能会导致,读写内容不一致的情况。

#挑战30天在头条写日记#