StringIO将字符串当做文件处理,十分方便
>>> from StringIO import StringIO >>> file_like_string = StringIO() >>> file_like_string.write("hello\n") #写入数据 >>> file_like_string.write("world\n") >>> file_like_string.write("I am StringIO\n") >>> 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\nworld\nI am StringIO\n' >>> file_like_string.tell() #获取当前读写位置 26 >>> file_like_string.read() #从末尾开始读取 '' >>> file_like_string.seek(0) #定位到开头 >>> file_like_string.read() #读取所有数据 'hello\nworld\nI am StringIO\n' >>> file_like_string.seek(0) >>> file_like_string.readline() #一次读取一行 'hello\n' >>> file_like_string.readline() 'world\n' >>> file_like_string.seek(0) >>> file_like_string.readlines() #读取所有行放入列表中 ['hello\n', 'world\n', 'I am StringIO\n'] >>> 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\nworld\nI am StringIO\n' >> file_like_string.len #获取内部字符串长度 26 >>> file_like_string.truncate() #从指定位置开始截断数据 >>> file_like_string.getvalue() 'hello\n' >> file_like_string.len 6 >>> file_like_string.close() #关闭StringIO对象