zoukankan      html  css  js  c++  java
  • Python2.7-io

    io 模块,用于处理流数据,在 python2 下,是内置 file 对象的另一种选择,在 python3 下,此模块是默认的文件和流数据的接口。

    1、模块继承关系

    IOBase
    --RawIOBase
    ----FileIO
    --BufferedIOBase
    ----BufferedWriter
    ----BufferedReader
    ----BufferedRWPair
    ----BufferedRandom
    ----BytesIO
    --TextIOBase
    ----TextIOWrapper
    ------StringIO

    2、模块属性

    io.DEFAULT_BUFFER_SIZE:模块进行 I/O 时的默认缓存大小

    3、模块方法

    io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True):打开一个文件

    参数设置:
    file:文件路径或文件描述符
    mode:文件打开方式,有 r/w/a/b/t/+/U,默认‘rt’
    buffering:0 关闭缓存(只能在二进制模式下),1 表示线性缓存(只能在文本模式下),大于1 表示设置缓冲区大小
    encoding:文件的编码
    errors:编码遇到错误时的处理
    newline:控制换行符
    closefd:用文件描述符打开文件时,设置为True,关闭文件对象同时关闭文件描述符

    4、模块异常

    io.BlockingIOError:对非阻塞(non-blocking)流进行了阻塞
    io.UnsupportedOperation:对流进行了不支持的操作

    5、模块的类

    5.1 IOBase 基类,不能直接构建,是所有类的抽象基类

    5.1.1 类的方法

    flush():更新缓冲区数据至流,对只读和非阻塞流无效
    close():更新并关闭流
    fileno():返回文件描述符,如果不是用文件描述符打开的抛出 IOError
    isatty():判断流是否和终端相连
    readable():判断流是否可被读取
    writable():判断流是否支持写
    seekable():判断流是否支持随机访问
    readline(limit=-1):读一行数据,最多 limit 字节
    readlines(hint=-1):读 hint 行数据
    writelines(lines):向流写入数据
    seek(offset[, whence]):同内置文件对象 open 后的 seek
    tell():返回当前流中的位置
    truncate(size=None):截取流的 size 字节,为 none 时以当前位置为准
    __del__():析构函数,销毁对象

    5.1.2 类的属性

    closed:返回流是否被关闭

    5.2 RawIOBase,raw binary I/O 的基类,不能直接构建,继承于 IOBase

    5.2.1 类的额外方法

    read(n=-1):读 n 个字节并返回,默认的会执行 readall()
    readall():读取并返回流中所有字节
    readinto(b):从流中读取 b 长度的字节并赋值给 b,b 是预先申请过地址的可写对象
    write(b):将 b 写入流中

    5.3 BufferedIOBase,支持缓存的二进制流的基类,不能直接构建,继承于 IOBase,同 RawIOBase 的主要区别在于读写时会尽可能多的处理数据

    5.3.1 类的额外方法

    detach():将正在处理的流从缓冲区中分离出来并返回,然后缓冲区会出于一个不可用状态
    read(n=-1):读 n 个字节并返回,默认的会读完整个流
    read1(n=-1):读 n 个字节并返回,但只会执行一次
    readinto(b):从流中读取 b 长度的字节并赋值给 b,b 是预先申请过地址的可写对象
    write(b):将 b 写入流中

    5.4 FileIO 对象,继承自 RawIOBase

    5.4.1 初始化实例:FileIO(name, mode='r', closefd=True)

    参数设置:
    name:文件名或文件描述符
    mode:文件打开方式,同模块方法
    closefd:同模块方法

    5.4.2 类的额外属性

    mode:返回构造时的参数
    name:返回文件名或文件描述符

    5.5 BytesIO 对象,继承自 BufferedIOBase,根据内存字节缓冲区实现的流

    5.5.1 初始化实例:BytesIO([initial_bytes])

    参数设置:
    initial_bytes:包含初始化信息的 bytes 对象

    5.5.2 类的额外方法

    getvalue():返回缓冲区内所有数据
    read1():同read()

    5.6 BufferedReader 对象,继承自 BufferedIOBase,更高层的用于读的缓冲区对象

    5.6.1 初始化实例:BufferedReader(raw, buffer_size=DEFAULT_BUFFER_SIZE)

    参数设置:
    raw:包含初始化信息的流
    buffer_size:缓冲区大小

    5.6.2 类的额外方法

    peek([n]):返回 n 字节数据,保持流的位置不动
    read([n]):读取并返回 n 字节数据
    read1(n=-1):读 n 个字节并返回,但只会执行一次

    5.7 BufferedWriter 对象,继承自 BufferedIOBase,更高层的用于写的缓冲区对象

    5.7.1 初始化实例:BufferedWriter(raw, buffer_size=DEFAULT_BUFFER_SIZE)

    参数设置:
    raw:包含初始化信息的流
    buffer_size:缓冲区大小

    5.7.2 类的额外方法

    flush():将缓冲区数据更新至流中
    write(b):向缓冲区写入 b,并返回写入字节数

    5.8 BufferedRandom 对象,继承自 BufferedIOBase,支持随机读写的缓冲区对象

    5.8.1 初始化实例:BufferedRandom(raw, buffer_size=DEFAULT_BUFFER_SIZE)

    参数设置:
    raw:包含初始化信息的流
    buffer_size:缓冲区大小

    5.9 BufferedRWPair 对象,继承自 BufferedIOBase,支持读写的缓冲区对象

    5.9.1 初始化实例:BufferedRWPair(reader, writer, buffer_size=DEFAULT_BUFFER_SIZE)

    参数设置:
    reader:可读对象
    writer:可写对象
    buffer_size:缓冲区大小

    5.10 TextIOBase,文本流的基类,不能直接构建,继承自 IOBase

    5.10.1 类的额外方法

    detach():将正在处理的流从缓冲区中分离出来并返回,然后缓冲区会出于一个不可用状态
    read(n):读 n 个字符并返回,默认的会读完整个流
    readline(limit=-1):读一行并返回一个 unicode 对象,limit 设置读的字符数
    write(s):将字符串 s 写入流中

    5.11 TextIOWrapper,继承自 TextIOBase,缓冲区文本流

    5.11.1 初始化实例:TextIOWrapper(buffer, encoding=None, errors=None, newline=None, line_buffering=False)

    参数设置:
    buffer:缓冲区信息
    encoding:文件的编码
    errors:编码遇到错误时的处理
    newline:控制换行符
    line_buffering:为 True 时,每次遇到换行符都执行一次 flush,更新数据至流

    5.12 StringIO,继承自 TextIOWrapper,内存文本流

    5.12.1 初始化实例:StringIO(initial_value=u'', newline=u' ')

    参数设置:
    initial_value:初始数据
    newline:控制换行符

    5.12.2 类的额外方法

    getvalue():返回缓冲区内所有数据

    ---------------- 坚持每天学习一点点
  • 相关阅读:
    (转)单机上配置hadoop
    整数划分 Integer Partition(二)
    整数划分 Integer Partition(一)
    深入理解计算机系统:信息的处理和表示(二)整数四则运算
    深入理解计算机系统:信息的处理与表示(一)基础
    从《营造法式》为何成书于北宋 谈起
    (转)排列算法 Permutation Generation
    洛谷2971 [USACO10HOL]牛的政治Cow Politics
    洛谷1549 棋盘问题(2)
    洛谷3084 [USACO13OPEN]照片Photo
  • 原文地址:https://www.cnblogs.com/tccbj/p/8634772.html
Copyright © 2011-2022 走看看