Python的StringIO模块和cStringIO模块
1.StringIO模块
StringIO用于像文件一样对字符串缓冲区或者叫做内存文件进行读写。
f = StringIO() # ready for writing
f = StringIO(buf) # ready for reading
f.close() # explicitly release resources held
flag = f.isatty() # always false
pos = f.tell() # get current position
f.seek(pos) # set current position
f.seek(pos, mode) # mode 0: absolute; 1: relative; 2: relative to EOF
buf = f.read() # read until EOF
buf = f.read(n) # read up to n bytes
buf = f.readline() # read until end of line ('\n') or EOF
list = f.readlines()# list of f.readline() results until EOF
f.truncate([size]) # truncate file at to at most size (default: current pos)
f.write(buf) # write at current position
f.writelines(list) # for line in list: f.write(line)
f.getvalue() # return whole file's contents as a string
在有些时候python调用shell命令或者使用socket向端口发送命令后返回一大串分行的字符串。就可以使用StringIO对这些字符串分行读写。
例如向ZooKeeper的端口发送mntr命令
import sockets=socket.socket()
s.connect(('localhost',2181))
s.send('mntr')
data_mntr=s.recv(2048)
s.close()
print data_mntr
# python test.py
zk_version3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency0
zk_max_latency0
zk_min_latency0
zk_packets_received335
zk_packets_sent334
zk_num_alive_connections1
zk_outstanding_requests0
zk_server_statefollower
zk_znode_count17159
zk_watch_count0
zk_ephemerals_count1
zk_approximate_data_size6666471
zk_open_file_descriptor_count27
zk_max_file_descriptor_count102400
data_mntr返回的数据就是一个string buffer,如果需要对每行数据进行读写,就需要像文件那样使用readline()或者readlines()
#!/usr/bin/python
import socket
from StringIO import StringIO
s=socket.socket()
s.connect(('localhost',2181))
s.send('mntr')
data_mntr=s.recv(2048)
s.close()h=StringIO(data_mntr)print h.readline()
print h.readlines()
# python test.py
zk_version3.4.6-1569965, built on 02/20/2014 09:09 GMT['zk_avg_latency\t0\n', 'zk_max_latency\t0\n', 'zk_min_latency\t0\n', 'zk_packets_received\t347\n', 'zk_packets_sent\t346\n', 'zk_num_alive_connections\t1\n', 'zk_outstanding_requests\t0\n', 'zk_server_state\tfollower\n', 'zk_znode_count\t17159\n', 'zk_watch_count\t0\n', 'zk_ephemerals_count\t1\n', 'zk_approximate_data_size\t6666471\n', 'zk_open_file_descriptor_count\t27\n', 'zk_max_file_descriptor_count\t102400\n']
2.cStringIO模块
cStringIO模块和StringIO模块功能类似。不过这个模块是用C语言编写的。
将以上的
from StringIO import StringIO
直接换成
from cStringIO import StringIO
参考文章:
https://docs.python.org/2.6/library/stringio.html
转载于:https://blog.51cto.com/john88wang/1745633
Python的StringIO模块和cStringIO模块相关推荐
- python中的io模块_Python的StringIO模块和cStringIO模块
1.StringIO模块 StringIO用于像文件一样对字符串缓冲区或者叫做内存文件进行读写. f = StringIO() # ready for writing f = StringI ...
- 学习Python:StringIO与cStringIO
StringIO StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的"文件",我们可以将操作磁盘文件那样来操作StringIO.一个简单的例子,让你对 ...
- Python:StringIO与cStringIO
StringIO StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的"文件",我们可以将操作磁盘文件那样来操作StringIO.一个简单的例子,让你对 ...
- Python并发编程——paramiko远程控制的模块、病毒攻击原理、dll注入、
文章目录 paramiko模块 作业 攻击原理解析 一.什么是dll 二.为何要有dll 什么是dll注入: 什么时候需要dll注入 dll注入的方法 使用SetWindowsHookEx函数对应用程 ...
- python curl模块_python pycurl模块
一.pycurl概述 PycURl是一个C语言写的libcurl的python绑定库.libcurl 是一个自由的,并且容易使用的用在客户端的 URL 传输库.它的功能很强大,在PyCURL的主页上介 ...
- Python多线程(3)——Queue模块
Python多线程(3)--Queue模块 Queue模块支持先进先出(FIFO)队列,支持多线程的访问,包括一个主要的类型(Queue)和两个异常类(exception classes). Pyth ...
- python argparse模块_Python argparse模块应用实例解析
这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...
- Python中常用的数据分析工具(模块)有哪些?
本期Python培训分享:Python中常用的数据分析工具(模块)有哪些?Python本身的数据分析功能并不强,需要安装一些第三方的扩展库来增强它的能力.我们课程用到的库包括NumPy.Pandas. ...
- Python学习系列(六)(模块)
Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ...
最新文章
- LeetCode简单题之判断字符串的两半是否相似
- python编程可视化小程序_人人都可以写的可视化Python小程序第二篇:旋转的烟花...
- 微服务化后,这几点一定要注意
- android 壁纸 裁剪,Android图片裁剪之自由裁剪
- 30人NLP公司获4000万美元投资,杜兰特也入股了
- 计算机软件与程序没有任何关系,提示“该文件没有与之关联的程序来执行该操作”怎么解决?...
- nginx 缓存设置
- stack overflow at line
- leetcode 140. 单词拆分 II(记忆化)
- 带有书签的Android WebView
- Python学习笔记五
- [Java基础] 使用JMAP dump及分析dump文件
- 普通卷积、转置卷积、空洞卷积(dilated convolution、Atrous Convolution)
- [转帖][攻防测试工具]系统监控必备工具procexp和procmon
- JS实现文件的上传与下载
- 股票估值法研究报告_论述股票的估值方法
- mysql服务starting_MySQl服务无法启动(Starting MySQL.The server quit withou)
- python验证身份证最后一位数字代表什么_身份证最后一位不是数字而是X,代表什么含义?涨知识了...
- x86架构和arm架构的cpu简图
- 如何在ps中将图片素描化
热门文章
- React使用Styled-Componets来添加样式
- Sprint软银宣布计划2019年推出5G商用服务
- 一个想法照进现实-《IT连》创业项目:直觉型面试招聘的Bug
- apu和atom处理器两者的定位
- 07年了,新的一年又开始了
- BCH钱包的“现金”支持比特币现金NFC交易
- 深入探究Java中equals()和==的区别是什么
- 大尺寸3D打印机:不再是“围城”!工业级3D打印的瞬发时代已来!
- git(码云):如何把本地代码提交到码云代码管理项目上
- 如果修改postgresql的最大连接数