仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 989|回复: 9
打印 上一主题 下一主题

[CentOS(社区)] 带来一篇python StringIO 模块用于在内存缓冲区中读写数据

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 21:16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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操作系统。
分手快乐 该用户已被删除
沙发
发表于 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也都首先翻译成英语在国际学术杂志和网络上发表。
第二个灵魂 该用户已被删除
5#
发表于 2015-2-6 10:47:39 | 只看该作者
任何人都可以根据自己的喜好来定制适合自己的操作系统,Linux?是抢占式多任务多用户操作系统.
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-16 01:55:13 | 只看该作者
工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多。
乐观 该用户已被删除
7#
发表于 2015-3-4 22:30:27 | 只看该作者
直到学习Linux这门课以后,我才知道,原来我错了。?
透明 该用户已被删除
8#
发表于 2015-3-11 21:17:20 | 只看该作者
Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。
admin 该用户已被删除
9#
发表于 2015-3-19 14:42:23 | 只看该作者
掌握硬件配置,如显卡,声卡,网卡等,硬件只要不是太老或太新一般都能被支持,作为一名Linux系统管理员建议多阅读有关硬件配置文章,对各种不支持或支持不太好的硬件有深刻的了解。
莫相离 该用户已被删除
10#
发表于 2015-3-29 01:06:02 | 只看该作者
Windows有MS-DOS?方式,在该方式下通过输入DOS命令来操作电脑;Linux与Windows类似,也有命令方式,Linux?启动后如果不执行?X-WINDOWS,就会处于命令方式下,必须发命令才能操作电脑。?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 19:09

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表