IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]13.2.1 文本I/O

    caimouse发表于 2016-06-22 09:17:38
    love 0

    13.2 io--输入输出功能

    本模块提供了面向不同I/O类型的处理功能,基本是三种类型:文本I/O,二进制I/O和原始I/O。面向操作这些I/O的对象封装叫做文件对象,或者文件类型对象。三种类型的操作函数对输入参数的要求是不一样的,比如文本的函数就不能输入二进制参数,二进制的函数就不能输入文本的参数,否则都会抛出异常。

    13.2.1 文本I/O

    文本I/O提供处理str字符串对象,要求输入的参数是字符串对象,返回的对象也是字符串对象。因此,文本模块封装了从文本转换到二进制的功能,包括对文本进行编码、解码等工作,对于使用者来说,不用关心这些处理过程,完全透明的。最简单的使用方式就是使用open()打开文件对象:

    f = open("myfile.txt", "r", encoding="utf-8")

    在这个函数里myfile.txt是文件名称,r是表示对文件进行读取,encoding是编码的参数,采用utf-8对二进制数据读取之后转换为字符串的解码方式。

     

    在内存里操作的文本流也可以使用StringIO对象来表示:

    f = io.StringIO("some initial text data")

    13.2.2 二进制I/O

    二进制I/O,也被称为buffered I/O,它处理参数和返回的对象都基于bytes类型的对象。不用对数据进行编码、解码、以及换行符之类的操作。最方便打开一个二进制I/O操作的方式就是采用b方式打开文件:

    f = open("myfile.jpg", "rb")

    在这里,myfile.jpg是文件的名称,rb是表示对文件进行读取,按二进制的方式读取,然后返回二进制文件对象f。

     

    内存里采用二进制I/O方式,可以使用BytesIO对象:

    f = io.BytesIO(b"some initial binary data: \x00\x01")

    13.2.3 原始I/O

    原始I/O方式也叫做非缓存I/O方式,提供了最低层次的二进制或文本流的读写功能。创建这种方式最简单的方法是使用二进制的模式b打开,并且把缓冲区关闭,如下:

    f = open("myfile.jpg", "rb", buffering=0)

    13.2.4 模块的高级接口

    io.DEFAULT_BUFFER_SIZE

    I/O操作时默认数据缓冲区的大小。

     

    io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

    这个函数是内置函数open()的别名。

     

    exception io.BlockingIOError

    与内置异常BlockingIOError一样。

     

    exception io.UnsupportedOperation

    当调用一个流对象不支持的操作时抛出的异常。


    蔡军生 QQ:9073204  深圳



沪ICP备19023445号-2号
友情链接