StringIO将字符串当做文件处理,十分方便
>>> from StringIO import StringIO >>> file_like_string = StringIO() >>> file_like_string.write("hello ") #写入数据 >>> file_like_string.write("world ") >>> file_like_string.write("I am StringIO ") >>> dir(file_like_string) ['__doc__', '__init__', '__iter__', '__module__', 'buf', 'buflist', 'close', 'closed', 'flush', 'getvalue', 'isatty', 'len', 'next', 'pos', 'read', 'readline', 'readlines', 'seek', 'softspace', 'tell', 'truncate', 'write', 'writelines'] >>> file_like_string.getvalue() #获取StringIO中包含的所有数据,与当前读写位置无关 'hello world I am StringIO ' >>> file_like_string.tell() #获取当前读写位置 26 >>> file_like_string.read() #从末尾开始读取 '' >>> file_like_string.seek(0) #定位到开头 >>> file_like_string.read() #读取所有数据 'hello world I am StringIO ' >>> file_like_string.seek(0) >>> file_like_string.readline() #一次读取一行 'hello ' >>> file_like_string.readline() 'world ' >>> file_like_string.seek(0) >>> file_like_string.readlines() #读取所有行放入列表中 ['hello ', 'world ', 'I am StringIO '] >>> file_like_string.seek(0) >>> for line in file_like_string: #StringIO对象可迭代,__iter__ ... print line.strip() ... hello world I am StringIO >>> file_like_string.seek(6) #定位,起始位置偏移量为0 >>> file_like_string.getvalue() 'hello world I am StringIO ' >> file_like_string.len #获取内部字符串长度 26 >>> file_like_string.truncate() #从指定位置开始截断数据 >>> file_like_string.getvalue() 'hello ' >> file_like_string.len 6 >>> file_like_string.close() #关闭StringIO对象