StringIO

很多时候,数据读写不一定是文件,也可以在内存中读写。

StringIO顾名思义就是在内存中读写str。

要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可:

>>> from io import StringIO
>>> f = StringIO()
>>> f.write('hello')
5
>>> f.write(' ')
1
>>> f.write('world!')
6
>>> print(f.getvalue())
hello world!

getvalue()方法用于获得写入后的str。

要读取StringIO,可以用一个str初始化StringIO,然后,像读文件一样读取:

>>> from io import StringIO
>>> f = StringIO('Hello!\nHi!\nGoodbye!')
>>> while True:
...     s = f.readline()
...     if s == '':
...         break
...     print(s.strip())
...
Hello!
Hi!
Goodbye!

BytesIO

StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。

BytesIO实现了在内存中读写bytes,我们创建一个BytesIO,然后写入一些bytes:

>>> from io import BytesIO
>>> f = BytesIO()
>>> f.write('中文'.encode('utf-8'))
6
>>> print(f.getvalue())
b'\xe4\xb8\xad\xe6\x96\x87'

请注意,写入的不是str,而是经过UTF-8编码的bytes。

和StringIO类似,可以用一个bytes初始化BytesIO,然后,像读文件一样读取:

>>> from io import BytesIO
>>> f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
>>> f.read()
b'\xe4\xb8\xad\xe6\x96\x87'

小结

StringIO和BytesIO是在内存中操作str和bytes的方法,使得和读写文件具有一致的接口。

python学习笔记(十五)标准库StringIO和BytesIO相关推荐

  1. python教程二十五 标准库概览

    操作系统接口 os模块提供了不少与操作系统相关联的函数. >>> import os >>> os.getcwd() # 返回当前的工作目录 'C:\\Python ...

  2. Python学习笔记17:标准库之数学相关(math包,random包)

    前面几节看得真心累.如今先来点简单easy理解的内容. 一 math包 math包主要处理数学相关的运算. 常数 math.e   # 自然常数e math.pi  # 圆周率pi 运算函数 math ...

  3. Python学习笔记14:标准库之信号量(signal包)

    signal包负责在Python程序内部处理信号.典型的操作包含预设信号处理函数,暂停并等待信号,以及定时发出SIGALRM等. 要注意,signal包主要是针对UNIX平台(比方Linux, MAC ...

  4. python学习笔记(十五) -- 枚举

    枚举 枚举的作用就是定义一组 数据形式为 dict 但却又不可变的常量 比如我们定义一个类,或者定义一个dict ,类中的成员变量可以被更改,而且类又可以被实例化,dict 里面的值也可以被更改. 如 ...

  5. python学习笔记十五:日期时间处理笔记

    #-*- coding: utf-8 -*- import datetime#给定日期向后N天的日期 def dateadd_day(days):d1 = datetime.datetime.now( ...

  6. python复制指定字符串_python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)...

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  7. Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

    Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件 用Polyworks脚本开发,没有高级语言的支持,功能难免单一,一些比较复杂的交互实现不了,界面和报告也很 ...

  8. windows内核开发学习笔记十五:IRP结构

    windows内核开发学习笔记十五:IRP结构   IRP(I/O Request Package)在windows内核中,有一种系统组件--IRP,即输入输出请求包.当上层应用程序需要访问底层输入输 ...

  9. python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹

    python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...

  10. python学习笔记(五)缩进

    python学习笔记(五)缩进 原作:http://www.cnblogs.com/vamei/archive/2012/05/29/2524706.html 笔记: #!/usr/bin/env p ...

最新文章

  1. 在IIS中为SQL Server 2008配置报表服务
  2. 最大信息系数——检测变量之间非线性相关性
  3. Python学习笔记-2017.5.4thon学习笔记-2017.8.14
  4. 浅谈代码的执行效率(2):编译器的威力 [摘自赵劼老师的博客]
  5. DataGridView里的Checkbox全选问题解决了!
  6. iphone4 白苹果解决方法 刷机+越狱
  7. NOPI修改xlsx文件内容,无法正常打开,提示文件格式或文件扩展名无效
  8. 互联网晚报 | 10月22日 星期五 | 火花思维澄清破产传闻;珠海万达商管赴港提交招股书;特斯拉Q3营收净利均创新高...
  9. fid和is_fid解释
  10. 当深度学习遇见自动文本摘要
  11. CSAPP第二章家庭作业
  12. 智能硬件可能成为网络安全事件新的“爆发点”
  13. Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】
  14. 行车记录仪开发方案比较--转载
  15. led台灯哪个牌子效果最好?2022最新国产led灯品牌排行
  16. N-puzzle-Problem
  17. 【总结】新产品开发阶段的名词 EVT/DVT/PVT/MP
  18. T58 Office开发模式
  19. python使用列表推导式生成5个数字8的列表_【菜鸟学Python】列表推导式
  20. 花样彩灯的c语言程序设计,单片机花样彩灯课程实施方案报告.doc

热门文章

  1. 单片机原理及其应用——单片机外部中断实验(八段数码管通过按键依次显示0~9数字)
  2. java issynthetic_java.lang.reflect.Constructor.isSynthetic()方法示例
  3. linux 性能教程,Linux系统下常见性能分析工具的使用
  4. oracle %date 0 10%,“date:~0,10%“是什么意思?
  5. #ifndef #define #endif ”防止头文件被重复包 .
  6. Android中的多种文件读写操作方法
  7. 微型计算机最早出现在第三代计算机中,微型计算机最早出现在第三代计算机中。...
  8. 解构给默认值_5个 JS 解构有趣的用途
  9. 插入模板_现场组装楼梯踏步模板施工支设细节
  10. 的引用_java中的强引用,软引用,弱引用,虚引用