open函数的参数
读写文件,要通过内置函数open()打开文件,获得文件对象。
函数open的参数如下:
open(
file,
mode='r',
buffering=-1,
encoding=None,
errors=None,
newline=None,
closefd=True,
opener=None
)
参数file
file参数指定了要打开文件的路径。
可以是相对路径,比如 'text.txt', 就是指当前工作目录下面的log.txt 文件 也可以是绝对路径,比如 'd:\project\text.txt'。
参数mode
mode指定了文件打开的模式:
默认为't'模式
参数 encoding
encoding 参数指定了读写文本文件时,使用的 字符编解码 方式。
可以使用的参数值如下
utf-8:UTF-8是一种针对Unicode的可变长度字符编码,也是一种前缀码。ASCII
utf-8-sig: utf-8-sig 需要提供BOM,即带有签名的 utf-8(UTF-8 with BOM)。
ASCII:ASCII 美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
gb2312:由中国国家标准总局1980年发布,1981年5月1日开始使用。GB2312编码共收录汉字6763个,其中一级汉字3755个,二级汉字3008个。
gbk:是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准。
buffering参数
用于设置缓冲策略:
buffering为-1时,使用默认大小的缓冲区。
buffering为0时,关闭缓冲区,直接读写,仅在二进制模式下有效。
buffering为1时,表示在文本模式下使用行缓冲区方式。即见到换行符就刷新存盘。
buffering为大于1时,表示缓冲区用于指定缓冲区的大小。
errors参数
是用来指定编码和解码错误时处理方法。
errors='strict',编码出错则抛出异常ValueError。同等于默认errors=None;
errors='ignore',忽略错误。
errors='replace',替代模式,比如使用“?’来替换出错的地方。
newline参数
控制换行。
参数可以用None, '', '\n', '\r', '\r\n'
用默认的参数即可。
用程序输入文本时想换行必须用'\n', '\r', '\r\n’,直接回车无效。
读取非程序输入的文本时,输入'\n', '\r', '\r\n’就是个字符串。没有换行的作用。但你回车换行的符号它能读取到。
参数closefd
关闭文件描述符
True表示关闭。
默认True,必须为True,否则报错。
参数opener
通过传递可调用对象opener可以使用自定义开启器。
然后通过调用opener(文件,标志)获取文件对象的基础文件描述器。
opener必须返回一个打开的文件描述器(传递os.open为opener 结果类似的功能 None)。