赞
踩
Python可以使用open函数来实现文件的打开,关闭,读写操作;
Python3中的open函数定义为:
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
其中mode列表为:
- 'r' #open for reading (default)
- 'w' #open for writing, truncating the file first
- 'x' #create a new file and open it for writing,python3新增
- 'a' #open for writing, appending to the end of the file if it exists
- 'b' #binary mode
- 't' #text mode (default),python3新增
- '+' #open a disk file for updating (reading and writing)
- 'U' #universal newline mode (deprecated)
这里我们主要关心一下'r', 'w', 'a', 'r+', 'w+', 'a+', 'x',很多人容易混淆不同模式的读写操作
1)'r'
只读模式,open函数中mode参数的默认模式,文件不存在的话,报FileNotFoundError(python2是IOError);
文件打开后,初始游标位置为0;
每次读都是从游标位置开始读;
如果进行了写操作,会报如下异常:
io.UnsupportedOperation: not writable
2)'w'
只写模式,文件不存在的话,创建文件;文件存在的话,首先清空文件,然后开始写;
文件打开后,初始游标位置为0;
每次写都是从游标位置开始写;
如果进行了读操作,首先文件也会被清空,会报如下异常:
io.UnsupportedOperation: not readable
3)‘a’
追加模式,文件不存在话,创建文件;文件存在的话,不会清空文件;
文件打开后,初始游标位置为文件结尾;
每次写都是从结尾开始写;
如果进行了读操作,同时报如下异常:
io.UnsupportedOperation: not readable
上面的比较好理解,下面就有点绕了
4)'r+'
读写模式,文件不存在的话,报FileNotFoundError(python2是IOError);
文件打开后,初始游标位置为0;
每次读写都是从游标位置开始;但是对于写操作,类似于替换操作;
看如下代码:
文件内容为:
abcdefg
代码内容为:
- f = open('open_mode.txt', 'r+')
- f.write('xyz')
- f.close()
运行代码后,文件内容变为:
xyzdefg
5)'w+'
只写模式,文件不存在的话,创建文件;文件存在的话,首先清空文件;
文件打开后,初始游标位置为0;
每次读写都是从游标位置开始;写操作,类似于替换操作;
6)‘a+’
追加模式,文件不存在话,创建文件;文件存在的话,不会清空文件;
文件打开后,初始游标位置为文件结尾;
每次写都是从结尾开始写;
读操作从游标位置开始;
7) 'x'
python3新加
创建文件并写操作,操作必须是不存在的文件,如果操作的文件已存在,则报错FileExistsError
不可读,如果进行了读操作,同时报如下异常:
io.UnsupportedOperation: not readable
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。