概述
在一些语言中(java),可以像操作文件对象一样,操作字符串,在python中也有类似的功能
StringIO(io是input,output的缩写),StringIO的一些方法和文件对象的方法是一样的,经常被用来作字符串的缓存
常用方法
read
语法:
s.read([n])
参数
n:用于限定读取的长度,类型为int,默认为从当前位置读取对象s中所有的数据。读取结束后,位置被移动。
返回
读取的内容,str类型
readline
语法:
s.readline([length])
参数
length:用于限定读取的结束位置,类型为int,缺省为None,即从当前位置读取至下一个以’\n’为结束符的当前行。读位置被移动。
返回
读取的内容,str类型
readlines
语法:
s.readlines()
参数
无
返回
读取所有行
write
将字符串写入对象
语法:
write(str):
参数
- str:从读写位置将字符串写入到对象s。读写位置被移动。
writelines
从读写位置将list写入对象
语法:
writelines(list):
参数
- list为一个列表,列表的元素必须都是字符串。读写位置被移动
getvalue
语法:
getvalue():
参数
无
返回值
返回对象中的所有数据
seek
移动读写位置到指定位置
语法:
s.seek(pos[,mode])
参数
- pos:移动当前读写位置至pos处
- mode:可选参数,默认为0
- 为0时将读写位置移动到pos处,
- 为1时将读写位置从当前位置移动pos个长度,
- 为2时读写位置置于末尾处再向后移动pos个长度。
tell
返回当前读写位置
语法:
s.tell()
参数
无
返回值
返回当前读写位置
flush
刷新缓冲区。
语法:
s.flush()
close
释放缓冲区,执行此函数后,数据将被释放,也不可再进行操作。
语法:
s.close()
isatty
语法:
s.isatty()
参数
无
返回值
此函数总是返回0。不论StringIO对象是否已被close。
truncate
切断数据
语法:
s.truncate([size]):
参数
size:从读写位置起切断数据,参数size限定裁剪长度,默认为None
测试性能
拼接字符串2000000次,看字符串拼接速度快,还是StringIO的速度快
测试str,代码如下:
import datetime
starttime=datetime.datetime.now()
s=''
index=0
while index<=2000000:
s+=str(index)
index+=1
endtime=datetime.datetime.now()
print((endtime-starttime).total_seconds())
print( len(s))
参数StringIO,代码如下:
import datetime
import io
starttime=datetime.datetime.now()
s=io.StringIO()
index=0
while index<=2000000:
s.write(str(index))
index+=1
endtime=datetime.datetime.now()
print((endtime-starttime).total_seconds())
print( len(s.getvalue()))
https://www.cnblogs.com/breezey/p/6663706.html
https://blog.csdn.net/zengxiantao1994/article/details/60466087