StringIO

StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的“文件”,我们可以将操作磁盘文件那样来操作StringIO。一个简单的例子,让你对StringIO有一个感性的认识:

from StringIO import StringIO# 生成一个StringIO对象,当前缓冲区内容为ABCDEF
s = StringIO('ABCDEF')
# 从开头写入,将会覆盖ABC
s.write('abc')
# 每次使用read()读取前,必须seek()
# 定位到开头
s.seek(0)
# 将输出abcDEF
print s.read()
# 定位到第二个字符c
s.seek(2)
# 从当前位置一直读取到结束,将输出cDEF
print s.read()
s.seek(3)
# 从第三个位置读取两个字符,将输出DE
print s.read(2)
s.seek(6)
# 从指定位置写入
s.write('GH')
s.seek(0)
# 将输出abcDEFGH
print s.read()
# 如果读取所有内容,可以直接使用getvalue()
# 将输出abcDEFGH
print s.getvalue()

通过例子,我们看到了StringIO的行为,基本与file一致。StringIO提供了一个方法,可以方便的获取其中的数据:StringIO. getvalue()。如果使用read方法获取其中的数据,必须通过seek先设置"文件指针"的位置。

cStringIO

Python标准模块中还提供了一个cStringIO模块,它的行为与StringIO基本一致,但运行效率方面比StringIO更好。因此,import的时候会写成下面的方式,但使用 cStringIO模块时,有几个注意点:

1. cStringIO.StringIO不能作为基类被继承;

2. 创建cStringIO.StringIO对象时,如果初始化函数提供了初始化数据,新生成的对象是只读的。

try:from cStringIO import StringIO
except ImportError:from StringIO import StringIOs = StringIO('A')
s.write('abc')
# 会提示:AttributeError: 'cStringIO.StringI' object has no attribute 'write'
print s.getvalue()

学习Python:StringIO与cStringIO相关推荐

  1. Python StringIO与cStringIO

    StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的"文件",我们可以将操作磁盘文件那样来操作StringIO.一个简单的例子,让你对StringIO有 ...

  2. Python中的StringIO与cStringIO简析

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  3. python大神-国内某Python大神自创完整版,系统性学习Python

    很多小伙伴纠结于这个一百天的时间,我觉得完全没有必要,也违背了我最初放这个大纲上来的初衷,我是觉得这个学习大纲还不错,自学按照这个来也能相对系统的学习知识,而不是零散细碎的知识最后无法整合,每个人的基 ...

  4. Python StringIO实现内存缓冲区中读写数据

    StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的"文件",我们可以像操作磁盘文件那样来操作StringIO.这篇文章主要介绍了Python Stri ...

  5. 从零开始学习python编程-Python3.5从零开始学 PDF 下载

    前言 第1章 进入Python 3.5的精彩世界 1.1 Python的起源 1.2 Python的应用场合 1.3 从2.7到3.5,Python的新特性 1.4 如何学习Python 1.5 Py ...

  6. python100天-如何系统地学习 Python,100天从新手到大师

    如果你还是迷茫到底如何系统的学习Python,没关系! 为大家整理了Python100天从新手到大师的系统学习教程,让你不用再纠结,一定能帮助到你的问题. 包括从基础的Python脚本到web开发.爬 ...

  7. 系统学习Python——进度条模块tqdm

    分类目录:<系统学习Python>总目录 tqdm在阿拉伯语中是"进步"的意思(塔卡杜姆,تقدّم)并且是西班牙语中"我非常爱你"的缩写.在Pyt ...

  8. python代码学习——python文件处理及路径处理

    python代码学习--python文件处理 存储相关 路径处理 os.path 目录的新建与删除 路径操作 绝对/相对路径方式获取路径信息 路径拼接和realpath方法 路径拼接 realpath ...

  9. 系统学习Python——单元测试unittest:测试报告

    分类目录:<系统学习Python>总目录 相关文章: · 单元测试unittest:框架结构 · 单元测试unittest:测试固件 · 单元测试unittest:编写测试用例 · 单元测 ...

  10. Python StringIO模块 实现在内存缓冲区中读写数据

    StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的"文件",我们可以像操作磁盘文件那样来操作StringIO.这篇文章主要介绍了Python Stri ...

最新文章

  1. mysql中取出的时间日期多个.0
  2. python 第一安装 https网络请求问题
  3. python mysql l链式查询_使用python flask sqlacalchemy orm在PostgreSQL中联接查询
  4. [BUUCTF-pwn]——[ZJCTF 2019]Login
  5. nodejs模块导入导出
  6. wifidog java_wifidog 配置中文说明
  7. PowerDesigner 学习
  8. mysql 存储过程 行锁_mysql存储过程出现锁表锁行的情况怎么解决?如:
  9. 又忙了一天,什么书也不看。
  10. leetcode 273场周赛 Problem-C
  11. 【java】for循环的应用
  12. 以用户为师,报喜鸟用需求助力云备份产品创新
  13. ae制作小球轨迹运动_教你如何用AE做出动画效果
  14. 2019-CS224n-Assignment3
  15. addClass添加类名称
  16. 02尚硅谷书城案例-用户的注册
  17. uva 1645 count
  18. 高级硬件工程师是怎样炼成的
  19. 最通俗易懂的python与mysql数据库交互
  20. SI好文翻译:铜箔表面纹理对损耗的影响:一个有效的模型(一)

热门文章

  1. java自学开发编程路线图
  2. Redis缓存一致性问题解决方案
  3. spring 运行原理
  4. 虚拟机的Nginx安装配置
  5. OpenGL ES 2.0 for Android教程(六):进入第三维
  6. LVI-SAM imageProjection.cpp 代码阅读 附录
  7. linux中的lnk格式,ink文件扩展名,ink文件怎么打开?
  8. 《最强NBA》——手游产品测评
  9. 2022年度总结:反思与回顾
  10. 【hadoop系列】Hadoop HDFS命令