|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小知识:Linux同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。
模块是用类编写的,只要一个StringIO类,以是它的可用***都在类中。
此类中的年夜部分函数都与对文件的操纵***相似。
例:
1#coding=gbk
2
3importStringIO,cStringIO,sys
4
5s=StringIO.StringIO("JGoodisahandsomeboy")
6s.write("JGoodisahandsomeboy
")
7s.write(okkkk中国)
8s.seek(0)
9prints.read()
10
11#最初4个字节
12s.seek(-4,2)
13prints.read()
14
15#----了局----
16#JGoodisahandsomeboy
17#okkkk中国
18#中国
经由过程例子,我们看到了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");
----------------------
s=StringIO.StrngIO([buf])
此实例相似于open***,分歧的是它其实不会在硬盘中天生文件,而只存放在缓冲区;可选参数buf是一个str或unicode范例。它将会与其他后续写进的数据寄存在一同。
----------------------
StringIO类中的***:
....●read
....●readline
....●readlines
....●write
....●writelines
....●getvalue
....●truncate
....●tell
....●seek
....●close
....●isatty
....●flush
----------------------
s.read([n])
参数n限制读取长度,int范例;缺省形态为从以后读写地位读取工具s中存储的一切数据。读取停止后,读写地位被挪动。
----------------------
s.readline([length])
参数length限制读取的停止地位,int范例,缺省形态为None:从以后读写地位读取至下一个以“
”为停止符确当前行。读写地位被挪动。
----------------------
s.readlines([sizehint])
参数sizehint为int范例,缺省形态为读取一切行并作为列表前往,除此以外从以后读写地位读取至下一个以“
”为停止符确当前行。读写地位被挪动。
----------------------
s.write(s)
从读写地位将参数s写进给工具s。参数s为str或unicode范例。读写地位被挪动。
----------------------
s.writelines(list)
从读写地位将list写进给工具s。参数list为一个列表,列表的成员为str或unicode范例。读写地位被挪动。
----------------------
s.getvalue()
此函数没有参数,前往工具s中的一切数据。
----------------------
s.truncate([size])
从读写地位起割断数据,参数size限制裁剪长度,缺省值为None。
----------------------
s.tell()
前往以后读写地位。
----------------------
s.seek(pos[,mode])
挪动以后读写地位至pos处,可选参数mode为0时将读写地位挪动至pos处,为1时将读写地位从以后地位起向后挪动pos个长度,为2时将读写地位置于开端处再向后挪动pos个长度;默许为0。
----------------------
s.close()
开释缓冲区,实行此函数后,数据将被开释,也不成再举行操纵。
---------------------
s.isatty()
此函数老是前往0。不管StringIO工具是不是已被close()。
----------------------
s.flush()
革新外部缓冲区。
----------------------
dir(StringIO.StringIO)的前往值中还包括有一个test函数,不外不必理会它,它没有任何意义
=====================================================
StringIO常常被用来作为字符串的缓存,应为StringIO有个优点,他的有些接口和文件操纵是分歧的,也就是说用一样的代码,能够同时当做文件操纵大概StringIO操纵。好比:
importstring,os,sys
importStringIO
defwritedata(fd,msg):
fd.write(msg)
f=open(aaa.txt,w)
writedata(f,"xxxxxxxxxxxx")
f.close()
s=StringIO.StringIO()
writedata(s,"xxxxxxxxxxxxxx")
由于文件工具和StringIO年夜部分的***都是一样的,好比read,readline,readlines,write,writelines都是有的,如许,StringIO就能够十分便利的作为"内存文件工具"。
importstring
importStringIO
s=StringIO.StringIO()
s.write("aaaa")
lines=[xxxxx,bbbbbbb]
s.writelines(lines)
s.seek(0)
prints.read()
prints.getvalue()
s.write("ttttttttt")
s.seek(0)
prints.readlines()
prints.len
StringIO另有一个对应的c言语版的完成,它有更好的功能,可是稍有一点点的区分,cStringIO没有len和pos属性。(另有,cStringIO不撑持Unicode编码)
小知识:对CentOS提供支持将是OpenLogic首次支持一个完整的Linux操作系统。 |
|