Python StringIO如何在内存中读写str


Posted in Python onJanuary 07, 2020

这篇文章主要介绍了python StringIO如何在内存中读写str,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

StringIO

很多时候,数据读写不一定是文件,也可以在内存中读写。StringIO就是在内存中读写str

from io import StringIO
ff = StringIO('Hello!\nHi!\nGoodbye!')
f = StringIO()  #创建StringIO对象--可以看做在内存中的文件
i=f.write('hello我是中国人\n') #写入字符串,自动移动读写指针
#返回值:返回字符串个数
i=f.write('李明\n')
f.write('中国\n')
str=f.getvalue() #读取字符串(全部)
#不操作指针

ss=f.seek(0) #移动读写指针
"""参数2:
为0时代表从文件开头开始算起
1代表从当前位置开始算起
2代表从文件末尾算起 ??
如果操作成功,则返回新的指针位置,如果操作失败,则函数返回 -1
"""
s=f.tell() #返回当前读写位置
# s = f.readline() #从当前位置开始读取一行,包括\n;自动移动读写指针
#s = f.readline(3) #从当前位置开始读取一行,包括\n;自动移动读写指针
# 参数 读取的最大字符数

#s=f.readlines()  #读取所有行,返回一个字符串列表;;自动移动读写指针
#['hello我是中国人\n', '李明\n', '中国\n']

#s = f.readlines(2) #读取指定行,返回一个字符串列表;自动移动读写指针

#f.flush() #刷新
#s=f.read() # 读取全部内容;自动移动读写指针
#s=f.read(5)  #从当前位置开始读取的最大字符数
#f.truncate(3) #保留最前面的n个字符数,其它都删除

f.close() #关闭

BytesIO

StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO

BytesIO实现了在内存中读写bytes

from io import BytesIO

# 方式一
f = BytesIO()  #创建BytesIO对象
i=f.write('中文\n'.encode('utf-8')) #写入字符串--字节形式
#返回值:写入的字节数;注意不是字符数

f.write('中国'.encode('utf-8'))

x=f.getvalue() #获取字符串(全部)--字节形式
# b'\xe4\xb8\xad\xe6\x96\x87'


# 方式二:可以用一个bytes初始化BytesIO,然后,像读文件一样读取
ff = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
y=ff.read() #读取字节

print(y)

优点:StringIO和BytesIO是在内存中操作str和bytes的方法,使得读写具有一致的速度

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的Django框架中用流响应生成CSV文件的教程
May 02 Python
Python判断列表是否已排序的各种方法及其性能分析
Jun 20 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
ActiveMQ:使用Python访问ActiveMQ的方法
Jan 30 Python
解决Python selenium get页面很慢时的问题
Jan 30 Python
django之使用celery-把耗时程序放到celery里面执行的方法
Jul 12 Python
简单了解python反射机制的一些知识
Jul 13 Python
python调用接口的4种方式代码实例
Nov 19 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
Aug 26 Python
彻底解决Python包下载慢问题
Nov 15 Python
python如何获取网络数据
Apr 11 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 #Python
python模拟实现斗地主发牌
Jan 07 #Python
python全局变量引用与修改过程解析
Jan 07 #Python
python__new__内置静态方法使用解析
Jan 07 #Python
Python常用模块sys,os,time,random功能与用法实例分析
Jan 07 #Python
python单例设计模式实现解析
Jan 07 #Python
Python字典生成式、集合生成式、生成器用法实例分析
Jan 07 #Python
You might like
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
第四章 php数学运算
2011/12/30 PHP
使用PHP编写的SVN类
2013/07/18 PHP
php中try catch捕获异常实例详解
2014/11/21 PHP
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
jQuery实现定位滚动条位置
2016/08/05 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
Angular如何由模板生成DOM树的方法
2019/12/23 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
python简单实现计算过期时间的方法
2015/06/09 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
python 用下标截取字符串的实例
2018/12/25 Python
详解python UDP 编程
2020/08/24 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
Java面试题:为什么要用Java
2012/05/11 面试题
25道Java面试题集合
2013/05/21 面试题
迟到检讨书400字
2014/01/13 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript
详解MySQL集群搭建
2021/05/26 MySQL
Python内置数据结构列表与元组示例详解
2021/08/04 Python
MySQL transaction事务安全示例讲解
2022/06/21 MySQL