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-8import 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 = keyoutput.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_keykey_content['private_key'] = private_key#logger.info('gen_keys:   key content:%s' % key_content)return key_contentga = 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模块和cStringIO模块

    1.StringIO模块 StringIO用于像文件一样对字符串缓冲区或者叫做内存文件进行读写. f = StringIO()      # ready for writing f = StringI ...

  2. python io模块_python中的StringIO模块

    原博文 2015-10-23 15:21 − # python中的StringIO模块 标签:python StringIO --- > 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的, ...

  3. Python StringIO模块 实现在内存缓冲区中读写数据

    StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的"文件",我们可以像操作磁盘文件那样来操作StringIO.这篇文章主要介绍了Python Stri ...

  4. python中的io模块_Python的StringIO模块和cStringIO模块

    1.StringIO模块 StringIO用于像文件一样对字符串缓冲区或者叫做内存文件进行读写. f = StringIO()      # ready for writing f = StringI ...

  5. Python(StringIO)模块详解

    #coding=utf-8 ''' Created on 2017年3月5日@author: zxt ''' from io import StringIO# StringIO还有一个对应的c语言版的 ...

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

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

  7. python中heapq的库是什么_详解Python中heapq模块的用法

    详解Python中heapq模块的用法 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  详解Python中heapq模块的用法.txt ] (友情提示:右键点上行t ...

  8. Python的io模块详解

    Python的io模块提供了多个流式处理接口,具体的处理函数实现位于_pyio.py模块中. 在_io.py模块中,提供了唯一的模块方法open(name, mode=None, buffering= ...

  9. Python图片处理模块PIL(pillow)

    Python图片处理模块PIL(pillow) 本篇包含:一.Image类的属性:1.Format   2.Mode   3.Size    4.Palette    5.Info           ...

最新文章

  1. LeetCode算法题14:递归和回溯2
  2. poj 1182 食物链(高级的带权并查集)
  3. Springboot高级特性——缓存
  4. 学习java之利用泛型访问自己定义的类
  5. 托管系统的mysql设计_PHP+MySQL托管中心管理系统的设计与实现
  6. aop中joinpoint_Spring AOP示例教程–方面,建议,切入点,JoinPoint,注释,XML配置...
  7. 【渝粤教育】国家开放大学2018年春季 0242-21T机械制图 参考试题
  8. 系统可行性研究报告模板
  9. html通过拼音首字母定位,input+div 实现输入拼音首字母或汉字自动检索上拉列表...
  10. 版本管理工具 SVN和git
  11. 【转载】win10右下角图标模糊如何解决_win10系统右下角图标突然变模糊怎么办-win7之家
  12. 微信支付之微信公众号网页支付(各种总结)
  13. java excel进度条_导出excel 用easyui显示进度条(也适用于其他框架遮罩层,进度条)...
  14. 第一啪,第一啪电影网,第一啪电影网用的哪里的模板diyipa.cc
  15. 第13期《凤凰涅槃,浴火重生!》2月刊
  16. flask中的所有第三方模块大集合
  17. 上证50基金有哪些_上证50指数基金,最全选购攻略
  18. pdn阻抗测试_基于SIWAVE的PDN阻抗仿真与测试对比
  19. Aspose.Cells的基础用法
  20. 古希腊悲剧《美狄亚》(2)

热门文章

  1. 一张图让你了解Storm的DRPC实现原理
  2. 微服务[学成在线] day20:项目部署与持续集成(DevOps)
  3. 单核CPU, 1G内存,也能做JVM调优吗?
  4. Penn Treebank数据集介绍+句法分析parsed的基本语法+句法分析基础知识+NLP常用公开数据集汇总及下载
  5. c++后台开发项目_在京东,我是怎么做项目管理的
  6. 前端工程师需要学习ps 吗_前端开发工程师需要掌握的6大PS技能
  7. MongoDB(4):Docker下使用命令操作Mongo数据库
  8. nginx笔记 安装nginx 配置 反向代理 多虚拟主机
  9. 数据压缩——rgb转yuv
  10. Jzoj3518 进化序列