Python3 io文本及原始流I/O工具用法详解


Posted in Python onMarch 23, 2020

io模块在解释器的内置open()之上实现了一些类来完成基于文件的输入和输出操作。这些类得到了适当的分解,从而可以针对不同的用途重新组合——例如,支持向一个网络套接字写Unicode数据。

1.1 内存中的流

StringIO提供了一种很便利的方式,可以使用文件API(如read()、write()等)处理内存中的文本。有些情况下,与其他一些字符串连接技术相比,使用StringIO构造大字符串可以提供更好的性能。内存中的流缓冲区对测试也很有用,写入磁盘上真正的文件并不会减慢测试套件的速度。

下面是使用StringIO缓冲区的一些标准例子。

import io
# Writing to a buffer
output = io.StringIO()
output.write('This goes into the buffer. ')
print('And so does this.', file=output)
# Retrieve the value written
print(output.getvalue())
output.close() # discard buffer memory
 
# Initialize a read buffer
input = io.StringIO('Inital value for read buffer')
# Read from the buffer
print(input.read())

这个例子使用了read(),不过也可以用readline()和readlines()方法。StringIO类还提供了一个seek()方法,读取文本时可以在缓冲区中跳转,如果使用一种前向解析算法,则这个方法对于回转很有用。

Python3 io文本及原始流I/O工具用法详解

要处理原始字节而不是Unicode文本,可以使用BytesIO。

import io
# Writing to a buffer
output = io.BytesIO()
output.write('This goes into the buffer. '.encode('utf-8'))
output.write('ÁÇÊ'.encode('utf-8'))
# Retrieve the value written
print(output.getvalue())
output.close() # discard buffer memory
 
# Initialize a read buffer
input = io.BytesIO(b'Inital value for read buffer')
# Read from the buffer
print(input.read())

写入BytesIO实例的值一定是bytes而不是str。

Python3 io文本及原始流I/O工具用法详解

1.2 为文本数据包装字节流

原始字节流(如套接字)可以被包装为一个层来处理串编码和解码,从而可以更容易地用于处理文本数据。TextIOWrapper类支持读写。write_through参数会禁用缓冲,并且立即将写至包装器的所有数据刷新输出到底层缓冲区。

import io
# Writing to a buffer
output = io.BytesIO()
wrapper = io.TextIOWrapper(
  output,
  encoding='utf-8',
  write_through=True,
)
wrapper.write('This goes into the buffer. ')
wrapper.write('ÁÇÊ')
# Retrieve the value written
print(output.getvalue())
output.close() # discard buffer memory
 
# Initialize a read buffer
input = io.BytesIO(
  b'Inital value for read buffer with unicode characters ' +
  'ÁÇÊ'.encode('utf-8')
)
wrapper = io.TextIOWrapper(input, encoding='utf-8')
# Read from the buffer
print(wrapper.read())

这个例子使用了一个BytesIO实例作为流。对应bz2、http,server和subprocess的例子展示了如何对其他类型的类似文件的对象使用TextIOWrapper。

Python3 io文本及原始流I/O工具用法详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python下尝试多线程编程
Apr 28 Python
Python二分法搜索算法实例分析
May 11 Python
AI人工智能 Python实现人机对话
Nov 13 Python
python编程线性回归代码示例
Dec 07 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
Apr 17 Python
对python中的try、except、finally 执行顺序详解
Feb 18 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 Python
python django model联合主键的例子
Aug 06 Python
python实现的读取网页并分词功能示例
Oct 29 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
神经网络训练采用gpu设置的方式
Mar 03 Python
python实现横向拼接图片
Mar 23 #Python
Python操作Excel工作簿的示例代码(\*.xlsx)
Mar 23 #Python
python实现拼接图片
Mar 23 #Python
python使用PIL剪切和拼接图片
Mar 23 #Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 #Python
python实现单张图像拼接与批量图片拼接
Mar 23 #Python
OpenCV Python实现拼图小游戏
Mar 23 #Python
You might like
php支持中文字符串分割的函数
2015/05/28 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
jQuery的slideToggle方法实例
2013/05/07 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
jquery中EasyUI实现同步树
2015/03/01 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
详解JavaScript的策略模式编程
2015/06/24 Javascript
javascript中offset、client、scroll的属性总结
2015/08/13 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
基于HTML模板和JSON数据的JavaScript交互(移动端)
2016/04/06 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
香港通票:Hong Kong Pass
2019/02/26 全球购物
材料物理专业个人求职信
2013/12/15 职场文书
市场营销职业生涯规划书范文
2014/01/12 职场文书
诚信考试承诺书
2014/03/27 职场文书
外语专业毕业生自荐信
2014/04/14 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
小学优秀班主任材料
2014/12/17 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
英雄儿女观后感
2015/06/09 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技