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. ERROR: epmd error for host 192: badarg (unknown POSIX error)
  2. 在Ubuntu 14.04 64bit上安装google-earth免费版
  3. C语言注释的匹配的正则表达式
  4. windows 64位 dll文件 位置及python包rtree shapely安装
  5. 驱动依赖_「世经研究」焦炭行业--仍旧依赖政策驱动
  6. 2019春第六周编程总结
  7. 香港中文大计算机科学系电话,港大和港中文计算机科学系2021年提前批招生开启!...
  8. uni-app开发微信小程序上传提示以下文件没有被打包上传
  9. gbk字库音序对照表
  10. SEM和SEO有什么区别,哪种更好一些
  11. 机器学习(6)——凸优化理论(一)
  12. 【如何解决 Web 越来越繁杂的问题】笔记
  13. 传统文化中,沉香对养身、养心、养神的功效
  14. C.实验7_3_奇数偶数
  15. 三级网络技术考前复习
  16. 交通灯定时控制系统的设计
  17. rz: xxxxxxx removed
  18. 学习总结 Java第一章
  19. C2181在c语言错误中怎么改,为啥说1.cpp(21) : error C2181: illegal else without matching if
  20. 肿瘤侵袭性和浸润性的区别

热门文章

  1. 用Python创建动态彩色二维码
  2. 3DSlicer扩展模块如何加入外部扩展包?
  3. 3DSlicer中查看形变场
  4. MapReduce关系代数运算——选择
  5. 架构——MVC的升华
  6. 还在手动发包?手把手教你 Jenkins 自动化部署SpringBoot
  7. 谷粒商城笔记+踩坑(22)——库存自动解锁。RabbitMQ延迟队列
  8. 【高级JSE技术】线程池
  9. 【每日新闻】苹果VS华为,人工智能手机芯片生态“封闭”与“开放”之战 | 工信部下发2018年第7批CDN与云服务牌照
  10. [转]基于AXI VDMA的图像采集系统