文件打开模式 w+ r+ a+ 区别和辨析
open的参数及说明===============================================================
Character Meaning
‘r’ open for reading (default)
‘w’ open for writing, truncating the file first
‘x’ create a new file and open it for writing
‘a’ open for writing, appending to the end of the file if it exists
‘b’ binary mode
‘t’ text mode (default)
‘+’ open a disk file for updating (reading and writing)
‘U’ universal newline mode (deprecated)
========= ===============================================================
文字意义
————————————————————————————————————————————
“R”打开阅读(默认)
“w”打开进行写入,首先截断文件
“x”创建一个新文件并打开它进行写入
“a”打开进行写入,如果文件存在,则附加到文件结尾
“B”二进制模式
“T”文本模式(默认)
“+”打开磁盘文件进行更新(读写)
“U”通用换行模式(已弃用)
===================================================================
可以使用查看
python -m pydoc open
w+ 打开文件并读写 1. 文件存在,则清空(也即写入空); 2. 文件不存在,则创建文件 ; 3. 文件流定位到开始位置, 所以read() 会得到空。
r+ 打开文件并读写 1. 文件存在,打开文件,文件指针定位到文件开始位置; 2. 文件不存在, 则报错文件不存在。
a+ 打开文件并读添 1. 文件存在,打开文件,文件指针定位到文件开始位置,但不清空;2. 文件不存在,创建文件; 3. 打开后读取时,在文件开头位置,4. 写入时,添加到文章末尾,并且指针位于添加后的末尾,所以再次读取会乱码。
另外,
-
w 打开文件写入,也会清空文件,如果使用read(),则报错;a 打开文件添加,数据流添加到文件末尾,而不是w模式的清空后,添加到文件末尾。
-
b可以附加到上述的字母后,形成rb, rb+, wb等等模式,针对二进制文件,比如exe, elf, jpeg格式的文件,进行文件操作; 在unix 类型的系统上,text格式与二进制的处理相同,但是非unix类型的系统上,换行格式不同,所以需要用加b模式来在指定是否是二进制。