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 相关文章推荐
Python3基础之基本运算符概述
Aug 13 Python
python基于multiprocessing的多进程创建方法
Jun 04 Python
Python基于动态规划算法计算单词距离
Jul 25 Python
Python实现二叉搜索树
Feb 03 Python
python利用不到一百行代码实现一个小siri
Mar 02 Python
python 获取网页编码方式实现代码
Mar 11 Python
python用户评论标签匹配的解决方法
May 31 Python
Python实现中值滤波去噪方式
Dec 18 Python
Python super()方法原理详解
Mar 31 Python
django 利用Q对象与F对象进行查询的实现
May 15 Python
Python 使用双重循环打印图形菱形操作
Aug 09 Python
numpy中生成随机数的几种常用函数(小结)
Aug 18 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
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
php设计模式 Strategy(策略模式)
2011/06/26 PHP
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
2014/08/27 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
[05:37]DOTA2-DPC中国联赛 正赛 Elephant vs iG 选手采访
2021/03/11 DOTA
python下os模块强大的重命名方法renames详解
2017/03/07 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
机械制造与自动化应届生求职信
2013/11/16 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
避暑山庄导游词
2015/02/04 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技