Chinaunix首页 | 论坛 | 博客
  • 博客访问: 219229
  • 博文数量: 39
  • 博客积分: 945
  • 博客等级: 准尉
  • 技术积分: 532
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-04 17:25
文章分类

全部博文(39)

文章存档

2012年(39)

我的朋友

分类: Python/Ruby

2012-06-13 11:34:08


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属性。(还有,cStringIO不支持Unicode编码)
阅读(1154) | 评论(0) | 转发(0) |
0

上一篇:Python set的集合操作

下一篇:没有了

给主人留下些什么吧!~~