StringIO经常被用来作字符串的缓存,因为StringIO的一些接口和文件操作是一致的,也就是说同样的代码,可以同时当成文件操作或者StringIO操作。

一、StringIO中的常用方法

1、read

用法:

s.read([n]):参数n用于限定读取的长度,类型为int,默认为从当前位置读取对象s中所有的数据。读取结束后,位置被移动。

2、readline

用法:

s.readline([length]):length用于限定读取的结束位置,类型为int,缺省为None,即从当前位置读取至下一个以'\n'为结束符的当前行。读位置被移动。

3、readlines

用法:

s.readlines():读取所有行

4、write

用法:

s.write(s):从读写位置将参数s写入到对象s。参数为str或unicode类型,读写位置被移动。

5、writeline

用法:

s.writeline(s):从读写位置将list写入给对象s。参数list为一个列表,列表的成员为str或unicode类型。读写位置被移动

6、getvalue

用法:

s.getvalue():返回对象s中的所有数据

7、truncate

用法:

s.truncate([size]):从读写位置起切断数据,参数size限定裁剪长度,默认为None

8、tell

用法:

s.tell()  #返回当前读写位置

9、seek

用法:

s.seek(pos[,mode]):移动当前读写位置至pos处,可选参数mode为0时将读写位置移动到pos处,为1时将读写位置从当前位置移动pos个长度,为2时读写位置置于末尾处再向后移动pos个长度。默认为0

10、close

用法:

s.close():释放缓冲区,执行此函数后,数据将被释放,也不可再进行操作。

11、isatty

用法:

s.isatty():此函数总是返回0。不论StringIO对象是否已被close。

12、flush

用法:

s.flush():刷新缓冲区。

二、String使用示例

下面是一个利用StringIO缓冲及paramiko的RSAKey生成密钥对函数:

#!/usr/bin/env python
#coding: utf-8 import StringIO
import os
from paramiko import RSAKey
def gen_keys(key=""):
"""
生成公钥 私钥
""" output = StringIO.StringIO()
sbuffer = StringIO.StringIO()
key_content = {}
#如果私钥不存在,生成一个私钥,并将私钥缓存到output中
if not key:
try:
key = RSAKey.generate(2048)
key.write_private_key(output)
private_key = output.getvalue()
except IOError:
raise IOError('gen_keys: there was an error writing to the file')
except SSHException:
raise SSHException('gen_keys: the key is invalid')
#如果私钥存在,直接获取该私钥
else:
private_key = key
output.write(private_key)
print output.getvalue()
try:
key = RSAKey.from_private_key(output)
except SSHException, e:
#raise SSHException(e)
print e
#利用上面的私钥生成公钥
for data in [key.get_name(),
" ",
key.get_base64(),
" %s@%s" % ("yap", os.uname()[1])]:
sbuffer.write(data)
public_key = sbuffer.getvalue()
key_content['public_key'] = public_key
key_content['private_key'] = private_key
#logger.info('gen_keys: key content:%s' % key_content)
return key_content ga = gen_keys() print ga

执行的结果输出如下:

{'public_key': u'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDr1wB1+waFdjkhXcJ2xj5YNbYTpXTsiTuFNHptz256MNOIVHM97p8Bzzi2SUOecU7Ol8oOc+UIqqjUsu62tSpwqRAhTPizTt7uo/E6rbuiyw9mV9BYj5uyrHHdvqbh0vHNUJmI3k6HX7WSOkHrhgeLjMIil+0oSAvtlmEtXxQAAkupOy0pM95vRJFtWPv9+ehf66FKBXjytAmIUQjVD63zXJzGza5/8oa/OmIhqtc7kN+cmgZsNCq1xiDYMUy+3CayCDcSMAb9HtOVrxApNLiJJ0QQlrgNy4bDLtg0g5EVVBAnFqmVjVWq7nPtqKFfPigSUAnAxECGdEtu2XJplOET yap@mysoft-ci', 'private_key': u'-----BEGIN RSA PRIVATE KEY-----\nMIIEpgIBAAKCAQEA69cAdfsGhXY5IV3CdsY+WDW2E6V07Ik7hTR6bc9uejDTiFRz\nPe6fAc84tklDnnFOzpfKDnPlCKqo1LLutrUqcKkQIUz4s07e7qPxOq27ossPZlfQ\nWI+bsqxx3b6m4dLxzVCZiN5Oh1+1kjpB64YHi4zCIpftKEgL7ZZhLV8UAAJLqTst\nKTPeb0SRbVj7/fnoX+uhSgV48rQJiFEI1Q+t81ycxs2uf/KGvzpiIarXO5DfnJoG\nbDQqtcYg2DFMvtwmsgg3EjAG/R7Tla8QKTS4iSdEEJa4DcuGwy7YNIORFVQQJxap\nlY1Vqu5z7aihXz4oElAJwMRAhnRLbtlyaZThEwIDAQABAoIBAQDZJS8hci4A+GeF\n10RUBBgnM90fnbpYh8qrzTPko5c/HnHGFqu9HFZ/XgMDo9WEryM2iP/b6s24+xlU\nLiQpSgl3jdJyNuLOhhIxe/WCZ7BaJclaHASTZjaffrOgzgft6UIGHu4e3UFE19Tg\nfI9xggi0brfZDjWoXx3MdienlOFfVvkiJc0YB8fawHvSmbKbzu/M58wP4zZKv/wP\nIHyxH10CkTAHP2/KvQ00kKheFdx6IY3VF44u5UsM4ZvaCqkzaVqDgHkaUqBLBdug\nxMhE1etOnODm+f6qrk4BsZxsTORiheJyT97QS8KOzZV7ouBcoOzz8gB0Tglz+wT4\nHgOnVAHxAoGBAPvGxlvSaq0uKNRIPv+eyyHu2HDw/ehHo3T7HTFh4g/KjCNRVNAR\nTrAFhVn/bwFyuCxVMPeA3Zo+ZTBue5VA979rv22JFg4tM/vrkDAz1h+EvY+tp4Nv\naNHie6nQY6jJgPQybG/9UwVwk2nlmtwJtNvTHwsd/8Kzljp342dja1gfAoGBAO/L\nyfwNlRYxiXj2rqmt7NcSqhcFf4Qv3s3UMaUPMOr7jgAsQfMigDO/bTYGmOMqVrGa\ny3YnbCROxE2wjqE1vf4F+yWv+xEqX/3cd/rFyPb15x9+KtbkD11A4xzAURVYakpO\n6w/1TAbBFFDVVm15cHJ3ymJd6PGm5XYMvw+6P6iNAoGBAM2DoHBdHlSERDGbU0km\nXhsxshzmqesLZuJbA6ZGhtdq9t7xSXCZYAiQSRyAQyUEdk9Brrmox7payhAxbtES\n+eeXVOddKdKilTdCPi0KcvLBUFZSYlUIAKCp5VVk06R37rnl2tvDBRyAmuOq1rBb\nf/SbrVBOyXEtVCgfqlC/N2TzAoGBAMZa2VrA1XkFQwUncLV05DvH+aCPcLqkanXy\nN5qkpT9LFFw6P9dhy5CCoVEWRfNq+0lwlSrIU2D5MtJc4K6jaOSuh9/V4SWC2uKA\nM1LhtmnqYOOhFsio37iwyuzmfGvethV/kFuj+d6AalCvGA34bTaStnuF2QHDn311\n77mPw8alAoGBAK5cGdvlcPE1u/l9DMthjZjYwKp3dBm5sbBOiri+0l+ML5Aje+B+\nOJtKp1F4wqz4iA9SadeYJjBAqpnIXz405I5RcmDH2y1845k7gzN++6PEp+kbSmQV\n5DTiUiRtx9G7Woaz+L9ircyuuLkzJRrwTwQWeaMkaYt/OPpP8ERV+Aha\n-----END RSA PRIVATE KEY-----\n'}

python的StringIO模块的更多相关文章

  1. python中的StringIO模块

    python中的StringIO模块 标签:python StringIO 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的,只有一个StringIO类,所以它的可用方法都在类中.此类中的大部分 ...

  2. python标准库介绍——18 StringIO 模块详解

    ==StringIO 模块== [Example 2-8 #eg-2-8] 展示了 ``StringIO`` 模块的使用. 它实现了一个工作在内存的文件对象 (内存文件). 在大多需要标准文件对象的地 ...

  3. python学习之正则表达式,StringIO模块,异常处理,搭建测试环境

    python正则表达式 引入一个强大的匹配功能来匹配字符串 import re 正则表达式的表示类型raw string类型(原生字符串类型) r'sa\\/sad/asd'用r转为raw strin ...

  4. Python进阶之模块与包

    模块 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB","S ...

  5. 飘逸的python - 简明gzip模块压缩教程

    压缩数据创建gzip文件 先看一个略麻烦的做法 import StringIO,gzip content = 'Life is short.I use python' zbuf = StringIO. ...

  6. python的sys模块

    Sys模块函数之多,我只能选取自己认为比较实用的一些函数列在此处.借马云找员工的说法,"找最合适的而不是最天才的",这句话,我个人觉得在很多方面都能适应,学习也不在话下.Sys模块 ...

  7. Python进阶之模块

    在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很 ...

  8. python 的StringIO

    python 3.4以后StringIO和cStringIO就没有了,转移到 io,的StringIO和BytesIO from io import StringIO fp=StringIO( ) 1 ...

  9. python常用sys模块

    sys.argv 命令行参数List,第一个元素是程序本身路径 sys.modules.keys() 返回所有已经导入的模块列表 sys.exc_info() 获取当前正在处理的异常类,exc_typ ...

随机推荐

  1. 5个最优秀的微信小程序UI组件库

    开发微信小程序的过程中,选择一款好用的组件库,可以达到事半功倍的效果.自从微信小程序面世以来,不断有一些开源组件库出来,下面5款就是排名比较靠前,用户使用量与关注度比较高的小程序UI组件库.还没用到它 ...

  2. scrum立会报告+燃尽图(第二周第七次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2252 一.小组介绍 组名:杨老师粉丝群 组长:乔静玉 组员:吴奕瑶.公冶 ...

  3. 王者荣耀交流协会 -- 第4次Scrum会议

    Scrum master : 王磊 要求1 : 工作照片 照片由高远博同学拍摄 ,王露芝同学(外援)没有参加本次会议. 要求2 : 时间跨度:2017年10月16日 18:00 - 18:44 共计4 ...

  4. 冲刺ing-4

    第四次Scrum冲刺 队员完成的任务 队员 完成任务 吴伟华 Leangoo的看板截图,燃尽图 蔺皓雯 编写博客,学习后端设计 蔡晨旸 学习后端设计 曾茜 后端设计 鲁婧楠 服务器建构 杨池宇 学习后 ...

  5. CSS3:不可思议的border属性

    在CSS中,其border属性有很多的规则.对于一些事物,例如三角形或者其它的图像,我们仍然使用图片代替.但是现在就不需要了,我们可以用CSS形成一些基本图形,我分享了一些关于这方面的技巧. 1.正三 ...

  6. python接口自动化测试框架实现之操作oracle数据库

    python操作oracle数据库需要使用到cx-oracle库. 安装:pip install cx-oracle python连接oracle数据库分以下步骤: 1.与oracle建立连接: 2. ...

  7. Django之ORM其他骚操作

    Django ORM执行原生SQL # extra # 在QuerySet的基础上继续执行子语句 # extra(self, select=None, where=None, params=None, ...

  8. Linux 下安装 java 环境(jdk + mysql + tomcat)

    Linux选用的是 centOS 6.8 64位 ,最先要将 centOS 中自带的 jdk 和 myqsql 卸载掉. 首先安装 了 SSH,通过 SSH 将 jdk,mysql,tomcat 的压 ...

  9. bzoj3545-bzoj3551-Peaks

    题意 给出一个图,边有边权,点有点权,每次询问一个点 \(x\) 只走边权小于等于 \(d\) 的边能到达的点中点权第 \(k\) 大. 强制在线,\(n\le 10^5,m,q\le 5\times ...

  10. 常州day5

    Task 1 小 W 和小 M 一起玩拼图游戏啦~ 小 M 给小 M 一张 N 个点的图,有 M 条可选无向边,每条边有一个甜蜜值,小 W 要选 K条边,使得任意两点间最多有一条路径,并且选择的 K条 ...