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'\n')
参数设置:
initial_value:初始数据
newline:控制换行符
5.12.2 类的额外方法
getvalue():返回缓冲区内所有数据
Python2.7-io的更多相关文章
- 使ssh记住密码
前面介绍过Conemu , Msys2工具,提升了windows本地文件操作的效率,但使用ssh时候,总需要重新输入密码,不能像SercurityCRT等工具记住密码,使用时不是很爽快. 其实通过ss ...
- VS2015编译GEOS
下载链接:http://trac.osgeo.org/geos/ 1. 打开cmake,加载geos源码和定位geos的工程存放位置: 2.点击configure,会报错,首先设置CMAKE_INST ...
- python2.0_s12_day9_协程&多线程和cpu,磁盘io之间的关系
事件驱动和异步io有什么直接关系. 当我们访问一个网页,不考虑网络问题.我们人类不觉得网页慢. 但是实际中对计算机来说还是慢.那慢在哪里.io io操作是整个网络操作中最慢的.比如你打开网页要是有2秒 ...
- python2.0_s12_day9_事件驱动编程&异步IO
论事件驱动与异步IO 事件驱动编程是一种编程范式,这里程序的执行流由外部事件来决定.它的特点是包含一个事件循环,当外部事件发生时使用回调机制来触发相应的处理.另外两种常见的编程范式是(单线程)同步以及 ...
- 基于Windows10 x64+visual Studio2013+Python2.7.12环境下的Caffe配置学习
本文在windows下使用visual studio2013配置关联python(python-2.7.12.amd64.msi)的caffe项目,如果有耐心的人,当然可以自己去下载caffe项目自己 ...
- centos6.3安装python2.7, pip2.7, mysql
参考: https://github.com/h2oai/h2o-2/wiki/Installing-python-2.7-on-centos-6.3.-Follow-this-sequence-ex ...
- Python2.6.6执行selenium自动化
系统类型: [root@bogon home]# uname -aLinux bogon 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 20 ...
- socket_server源码剖析、python作用域、IO多路复用
本节内容: 课前准备知识: 函数嵌套函数的使用方法: 我们在使用函数嵌套函数的时候,是学习装饰器的时候,出现过,由一个函数返回值是一个函数体情况. 我们在使用函数嵌套函数的时候,最好也这么写. def ...
- CentOS6.5(Python-2.7.12)安装Pip
1.安装setuptools(下载链接可从https://pypi.python.org/pypi/setuptools#code-of-conduct寻找) #Download setuptools ...
- python_way day10 python和其他语言的作用域 、 python2.7多继承和3.5多继承的区别 、 socket 和 socketserver源码(支持并发处理socket,多进程,多线程)
python_way day10 1.python的作用域和其他语言的作用域 2.python2.7多继承和3.5多继承的区别 3.socket和socketserver源码(并发处理socket) ...
随机推荐
- 数据操作语句(DML)
增加(插入)数据 SQL>insert into 表名 values(值1,值2 /*根据表中的字段顺序和字段类型相应填写*/); SQL>commit; (提交,提交了别的人才看看到这个 ...
- 说说对npm的开发模式和生产模式的理解
nodejs这些年的发展非常快,相信没有哪个前端不知道的了,npm也成为了前端开发中经常用到了的一个命令.那么npm不是只用一个 "npm install xxx"命令就够了吗?实 ...
- js-设计模式学习笔记-策略模式
策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换(相互替换:表现为它们具有相同的目标和意图). 策略模式的目的是讲算法的使用与算法的实现分离开来. 一个基于策略模式的程 ...
- InfoQ观察:Java EE的未来
原创 2017-03-06 Charles Humble 聊聊架构 作者|Charles Humble编辑|薛命灯 作为InfoQ下一年编辑关注点审核工作的一部分,我们挑选了Java作为深入探讨的主题 ...
- 【VS2015】Win7 X64上面安装VS2015
环境: 1.Win7 x64 SP1旗舰版 2.VS2015专业版Update3 3.IE11 4.WDK10 5.SDK10 安装步骤: 1.安装IE11,需要如下补丁: a.Windo ...
- <Android开源库> PagerSlidingTabStrip从头到脚
简介 PagerSlidingTabStrip,是我个人经常使用到的一个和ViewPager配合的页面指示器,可以满足开发过程中常用的需求,如类似于今日头条的首页新闻内容导航栏等等,之前自己开发的Ju ...
- Apache,PHP,MySQL独立安装
最近在工作中常常接触到PHP,自己也写过一些简单的PHP页面.我们知道PHP是在服务器端运行的脚本语言,因此我们需要配置服务器环境.之前为了省事直接使用的是wamp集成环境,但是突然某一天领导要求我们 ...
- python 实现int函数
拖了这么久,最终还是战胜了懒惰,打开电脑写了这篇博客,内容也很简单,python实现字符串转整型的int方法 python已经实现了int方法,我们为什么还要再写一遍,直接用不就好了?事实确实如此,但 ...
- 如何用SQL脚本在SQL Server Replication中创建合并复制,以及怎么创建分区合并复制
假设我们要创建合并复制的发布端数据库是EFDemo其中有四张表,订阅端数据库是EFDemoSubscription,如下图所示: 首先创建发布端快照代理Sql agent job:"EFDe ...
- 十个强大的DevOps基础设施自动化工具,不容错过
Devops基础设施自动化的工具 有许多工具用于基础设施自动化.使用哪个工具决定于体系结构和基础设施的需求.下面我们列出了一些伟大的工具,用于不同类别配置管理.编制.持续集成.监控等. 1.Chef ...