python之StringIO

概述

在一些语言中(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


原文出处:/show_1EF2Ir4gM4iR.html