转自:http://m.oschina.net/code/snippet_16840_1806
StringIO经常被用来作为字符串的缓存,因为StringIO有个好处,他的有些接口和文件操作是一致的,也就是说用同样的代码,可以同时当成文件操作或者StringIO操作。
[代码]
import string, os, sys import StringIO def writedata(fd, msg): fd.write(msg) f = open('aaa.txt', 'w') writedata(f, "xxxxxxxxxxxx") f.close() s = StringIO.StringIO() writedata(s, "xxxxxxxxxxxxxx")
[代码]
import string import StringIO s = StringIO.StringIO() s.write("aaaa") lines = ['xxxxx', 'bbbbbbb'] s.writelines(lines) s.seek(0) print s.read() print s.getvalue() s.write(" ttttttttt ") s.seek(0) print s.readlines() print s.len
通过例子,我们看到了StringIO的行为,基本与file一致。StringIO提供了一个方法,可以方便的获取其中的数据:StringIO.getvalue()。如果使用read方法获取其中的数据,必须通过seek先设置"文件指针"的位置。
Python标准模块中还提供了一个cStringIO模块,它的行为与StringIO基本一致,但运行效率方面比StringIO更好。但使用cStringIO模块时,有两个注意点:
- 1. cStringIO.StringIO不能作为基类被继承;
- 2. 创建cStringIO.StringIO对象时,如果初始化函数提供了初始化数据,新生成的对象是只读的。所以下面的代码是错误的:
s = cStringIO.StringIO("JGood\n"); s.write("OOOKKK");
呵呵,谢谢
VaTG790i.最好的<a href=http://www.kyfei.com>网站推广软件</a>,
非常好
....................
;ui;普i;uighur;ui;ui;个
在unix网络编程中看到了关于TCP/IP的一些内容,我感觉还是写的不够。正在下载中,一定
下载地址呢