蒙在股里 发表于 2015-1-14 21:16:51

带来一篇python StringIO 模块用于在内存缓冲区中读写数据

小知识: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()
此实例相似于open***,分歧的是它其实不会在硬盘中天生文件,而只存放在缓冲区;可选参数buf是一个str或unicode范例。它将会与其他后续写进的数据寄存在一同。
----------------------
StringIO类中的***:
....●read
....●readline
....●readlines
....●write
....●writelines
....●getvalue
....●truncate
....●tell
....●seek
....●close
....●isatty
....●flush
----------------------
s.read()
参数n限制读取长度,int范例;缺省形态为从以后读写地位读取工具s中存储的一切数据。读取停止后,读写地位被挪动。
----------------------
s.readline()
参数length限制读取的停止地位,int范例,缺省形态为None:从以后读写地位读取至下一个以“
”为停止符确当前行。读写地位被挪动。
----------------------
s.readlines()
参数sizehint为int范例,缺省形态为读取一切行并作为列表前往,除此以外从以后读写地位读取至下一个以“
”为停止符确当前行。读写地位被挪动。
----------------------
s.write(s)
从读写地位将参数s写进给工具s。参数s为str或unicode范例。读写地位被挪动。
----------------------
s.writelines(list)
从读写地位将list写进给工具s。参数list为一个列表,列表的成员为str或unicode范例。读写地位被挪动。
----------------------
s.getvalue()
此函数没有参数,前往工具s中的一切数据。
----------------------
s.truncate()
从读写地位起割断数据,参数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操作系统。

分手快乐 发表于 2015-1-17 09:20:41

学习Linux半年了~个人认为不会的多在网上找资料网上有很多资料可以搜索到,LS那位说放手去搞。

不帅 发表于 2015-1-21 07:07:21

要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。

金色的骷髅 发表于 2015-1-30 10:35:28

即便是非英语国家的人发布技术文档,Linux也都首先翻译成英语在国际学术杂志和网络上发表。

第二个灵魂 发表于 2015-2-6 10:47:39

任何人都可以根据自己的喜好来定制适合自己的操作系统,Linux?是抢占式多任务多用户操作系统.

飘飘悠悠 发表于 2015-2-16 01:55:13

工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多。

乐观 发表于 2015-3-4 22:30:27

直到学习Linux这门课以后,我才知道,原来我错了。?

透明 发表于 2015-3-11 21:17:20

Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。

admin 发表于 2015-3-19 14:42:23

掌握硬件配置,如显卡,声卡,网卡等,硬件只要不是太老或太新一般都能被支持,作为一名Linux系统管理员建议多阅读有关硬件配置文章,对各种不支持或支持不太好的硬件有深刻的了解。

莫相离 发表于 2015-3-29 01:06:02

Windows有MS-DOS?方式,在该方式下通过输入DOS命令来操作电脑;Linux与Windows类似,也有命令方式,Linux?启动后如果不执行?X-WINDOWS,就会处于命令方式下,必须发命令才能操作电脑。?
页: [1]
查看完整版本: 带来一篇python StringIO 模块用于在内存缓冲区中读写数据