Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5120294
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类: Python/Ruby

2012-05-19 01:42:17

 
StringIO经常被用来作为字符串的缓存,应为StringIO有个好处,他的有些接口和文件操作是一致的,也就是说用同样的代码,可以同时当成文件操作或者StringIO操作。比如:


  1. import string, os, sys
  2. import StringIO

  3. def writedata(fd, msg):
  4.     fd.write(msg)
  5.     
  6. f = open('aaa.txt', 'w')

  7. writedata(f, "xxxxxxxxxxxx")
  8. f.close()

  9. s = StringIO.StringIO()
  10. writedata(s, "xxxxxxxxxxxxxx")
因为文件对象和StringIO大部分的方法都是一样的,比如read, readline, readlines, write, writelines都是有的,这样,StringIO就可以非常方便的作为"内存文件对象"。


  1. import string
  2. import StringIO

  3. s = StringIO.StringIO()
  4. s.write("aaaa")
  5. lines = ['xxxxx', 'bbbbbbb']
  6. s.writelines(lines)

  7. s.seek(0)
  8. print s.read()

  9. print s.getvalue()
  10. s.write(" ttttttttt ")
  11. s.seek(0)
  12. print s.readlines()
  13. print s.len
StringIO还有一个对应的c语言版的实现,它有更好的性能,但是稍有一点点的区别,cStringIO没有len和pos属性。

本文来自:
阅读(1022) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~