Python-如何理解open()函数的参数。
1、创建文件对象使用 open() 函数,它是python的内置函数。它的作用就是:打开文件并返回对应的文件对象。
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file: 文件路径。
mode: 文件打开模式。
buffering: 设置缓冲(不影响结果)。
encoding: 解码或编码文件的编码的名称,仅适用于文本文件。
errors: 指明编码和解码错误时怎么样处理,适用于文本模式。
newline: 文本模式之下,控制一行的结束字符。
closefd: 传入的file参数类型。
opener: 自定义打开文件方式(使用默认None)
它的参数列表里有长长的一串参数,但不要被吓到,可以看到只有一个位置参数file,其他的都是可选的默认参数,用到时候再具体传参。
2、位置参数file: 是路径类对象,表示将要打开的文件的路径(绝对路径或者当前工作目录的相对路径)
1)绝对路径:文件的具体位置,一个完整的文件路径。
2)相对路径:当前py文件夹的路径,就是和当前py在同一个文件夹的文件。
3、参数mode:是访问文件的模式。
(可以分为两部分理解方便记忆)
1--动作:
'r':只读模式(默认);
'w':写模式;
'a':追加写入模式;
2--文件模式:
'b':二进制模式;
't':文本模式(默认);
'+':更新磁盘文件(读取并写入);
模式=动作+文件模式:
例如:rt(r),wr(w)
4、参数buffering缓冲,用来表示缓冲区存盘的方式。
缓冲区是内存上的一个空间,当达到缓冲区满了之后,数据才会刷到磁盘。
1)buffering为-1时,使用默认大小的缓冲区。
2)buffering为0时,关闭缓冲区,直接读写,仅在二进制模式下有效。
3)buffering为1时,表示在文本模式下使用行缓冲区方式。即见到换行符就刷新存盘。
4)buffering为大于1时,表示缓冲区用于指定缓冲区的大小。
5、参数encoding: 设置编码的名称,适用于 t (文本模式)
例如:encoding='utf8'
6、参数errors:是用来指定编码和解码错误时处理方法。适用于 t (文本模式)。
1)errors=strict,编码出错则抛出异常ValueError。同等于默认errors=None;
2)errors=ignore,忽略错误。
3)errors=replace,替代模式,比如使用“?’来替换出错的地方。
例如:中文gbk编码如果忽略错误会出现乱码。
7、参数newline:控制换行。参数可以用None, '', '\n', '\r', '\r\n'(只能用于t模式)
关于这个搜了很多,中文都看不懂,也没人举例子,都是一样的天书解释。用默认的参数即可。
大概意思就是:
1)用程序输入文本时想换行必须用'\n', '\r', '\r\n’,直接回车无效。
2)读取非程序输入的文本时,输入'\n', '\r', '\r\n’就是个字符串。没有换行的作用。但你回车换行的符号它能读取到。
8、参数closefd:关闭文件描述符,True表示关闭。默认True,必须时True,否则报错。