总结open打开文件模式

Last Updated: 2023-06-09 03:50:31 Friday

-- TOC --

open打开文件模式

open mode commments
r default, readonly
w 创建新文本文件,如果文件已存在,源文件内容全部消失!
a 追加写入文本模式
r+ 可读可写,不创建文件
w+ 可读可写,清空源文件,或创建新文件
a+ 追加写入,可读,不清空源文件,但会创建新文件
x 如果文件不存在,就创建,否则open失败

以上是Python支持的全部7种文本文件的打开方式。

其中6种如果带上字母b,就变成了二进制文件的打开方式,其含义是一样的。因此二进制文件的打开方式有:rb,wb,ab,rb+,wb+,ab+

如果有写入设备文件的需求,比如直接将字节写入硬盘扇区,用rb+打开。

关于可读可写模式

请特别注意r+模式下的写入方式,不是插入,而是覆盖

>>> f = open('text.txt','r+')
>>> f.read()
'abcde\n12345\n66778899\n'
>>> f.seek(0)
0
>>> f.write('beginning...\n')
13
>>> f.seek(0)
0
>>> f.read()
'beginning...\n6778899\n'
>>> f.close()

虽然r+可写,但并不具有w创建新文件的功能。

关于a+模式

可以读,可以将文件指针指向最开始,但是写入永远是在文件最后进行。这个细节有些场景会很方便。

>>> f = open('text.txt')
>>> f.read()
'cs.pynote.net\n'
>>> f.close()
>>> f = open('text.txt','a+')
>>> f.tell()
15
>>> f.seek(0)
0
>>> f.read()
'cs.pynote.net\n'
>>> f.seek(0)
0
>>> f.write('123\n')
4
>>> f.seek(0)
0
>>> f.read()
'cs.pynote.net\n123\n'

本文链接:https://cs.pynote.net/sf/python/202301241/

-- EOF --

-- MORE --