python IO模块【二】:open函数详解

使用open函数可以非常方便的探究IO模块中的具体类的属性与方法,以及对字符串及字节数据的读写处理。其函数签名及注解如下所示:
 
open(name, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None )

  • 功能:打开文件,根据不同模式,返回不同的文件对象,如果打开文件失败,会抛出OSError,注意IOError已经是OSError的别名了。当以文本模式打开时,会返回TextIOWrapper,当以二进制只读模式打开时,返回BufferedReader;当以二进制只写模式打开时,返回BufferedWriter;当以二进制读写模式打开时,返回BufferedRandom。
  • name:1)值为文件名或者路径名;2)也可以是一个整数,这个整数表示文件描述符,如果文件描述符被指定,则当打开的文件对象被关闭时,对应的文件描述符也会被关闭,除非指定参数closefd为False。
  • mode:指定文件打开的模式,非常重要的参数,默认文件以只读的文本模式打开,可选的参数值包括:1)“w”,写入模式,当文件不存在时,创建一个新文件并写入;当文件存在时,先截断文件为空文件,然后再写入。2)“x”,写入模式,打开一个新文件并写入,若文件已经存在会报FileExistsError错误。3)“a“ 附加模式,另一种写入模式,当文件不存在时,先新建文件,然后再写入数据;若文件存在,则将新数据追加到末尾。4)”b“二进制模式,打开的文件对象只接受字节型字符串。5)”t“文本模式,打开的文件对象只接受文本型字符串,存储的字节会先根据特定的编码方式解码成文本字符串。
  • encoding: 指定编码的方式,仅适用于文本模式,因为二进制模式不需要编码解码。
  • buffering:指定缓存策略,当值为0时,表示关闭缓存,这种策略只能在二进制模式中使用;当值为1时,表示选择1行文本,这中策略只能在文本模式中使用;当值大于1时,表示固定大小的缓存空间。当不指定buffering参数时,对于二进制模式,一般相当于指定8129个字节长度的缓存空间;对于非交互式的文本模式,也相当于指定8129个字节长度的缓存空间,对于交互式的文本模式,相当于取文本的一行。
  • error:仅适用于文本模式,指定编码错误的处理方式,默认方式为”strict“,表示遇到编码错误,就抛出VauleError;还有ignore策略,表示忽略不能编码的数据。
  • newline:指定universal newline mode,该参数仅适用于文本模式,有效取值为None, ‘’, ‘\n’, ‘\r’, and ‘\r\n’,本质就是指定如何换行。对于读操作,1)当值为None时,universal newline mode被激活,文本中的任何’\n’, ‘\r’, and ‘\r\n’字符都会被先转换成’\n’,然后返回数据。2)当值为’‘时,universal newline mode被激活,文本中的任何’\n’, ‘\r’, and ‘\r\n’字符不会被转换,而是直接返回。3)对于其他值,niversal newline mode不会被激活,文本仅会在指定值的地方换行,并且不做转换直接返回文本。对于写入操作,当值为None时,任何的’\n’会先转换成os.linesep,在ubuntu中就是’\n’,然后写入。2)如果值为空或者’\n’,则不进行任何转换而是直接写入。3)如果是其他有效字符,则先将’\n’转换成指定值,然后写入。
  • closefd:为True表示文件对象关闭时,对应的文件描述符关闭;为False时,表示文件对象关闭时,当name参数的值不是文件描述符时,该参数必须为True。
  • opener:将一个可调用对象作为opener,自定义的opener必须返回一个文件描述符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值