Python入门篇-StringIO和BytesIO
Python入门篇-StringIO和BytesIO
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.StringIO(用于文本处理)
1>.使用案例
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 """ 8 io模块中的类 9 from io import StringIO 10 内存中,开辟的一个文本模式的buffer,可以像文件对象一样操作它 11 当close方法被调用的时候,这个buffer会被释放 12 """ 13 14 from io import StringIO 15 16 sio = StringIO() #内存中构建,像文件对象一样操作 17 print(sio.readable(), sio.writable(), sio.seekable()) 18 19 sio.write("https://www.cnblogs.com/yinzhengjie\nPython") 20 sio.seek(0) 21 print(sio.readline()) 22 23 print(sio.getvalue()) #获取全部内容。跟文件指针没有关系,即无视指针,输出全部内容 24 25 sio.close() 26 27 28 #以上代码执行结果如下: 29 True True True 30 https://www.cnblogs.com/yinzhengjie 31 32 https://www.cnblogs.com/yinzhengjie 33 Python
2>.StringIO优缺点
优点:
一般来说,磁盘的操作比内存的操作要慢得多,内存足够的情况下,一般的优化思路是少落地,减少磁盘IO的过程,可以大大提高程序的运行效率。
缺点:
如果机器重启或者掉电之类的故障发生,内存的数据都将不会存在啦!因此这种方法一般对数据并不太铭感的操作。
二.BytesIO(用于二进制处理)
1>.使用案例
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com """ io模块中的类 from io import StringIO 内存中,开辟的一个文本模式的buffer,可以像文件对象一样操作它 当close方法被调用的时候,这个buffer会被释放 """ from io import StringIO sio = StringIO() #内存中构建,像文件对象一样操作 print(sio.readable(), sio.writable(), sio.seekable()) sio.write("https://www.cnblogs.com/yinzhengjie\nPython") sio.seek(0) print(sio.readline()) print(sio.getvalue()) #获取全部内容。跟文件指针没有关系,即无视指针,输出全部内容 sio.close() #以上代码执行结果如下: True True True b'https://www.cnblogs.com/yinzhengjie\n' b'https://www.cnblogs.com/yinzhengjie\nPython'
2>.BytesIO优缺点
优点:
和StringIO思路一样,一般来说,磁盘的操作比内存的操作要慢得多,内存足够的情况下,一般的优化思路是少落地,减少磁盘IO的过程,可以大大提高程序的运行效率。
缺点:
和StringIO思路一样,如果机器重启或者掉电之类的故障发生,内存的数据都将不会存在啦!因此这种方法一般对数据并不太铭感的操作。
三.file-like对象
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 """ 8 file-like对象: 9 类文件对象,可以像文件对象一样操作 10 socket对象、输入输出对象(stdin、stdout)都是类文件对象 11 """ 12 13 from sys import stdout 14 15 f = stdout #引用标准输出 16 17 print(type(f)) 18 19 f.write('https://www.cnblogs.com/yinzhengjie\nPython') #调用标准输出对象 20 21 22 23 #以上代码输出结果如下: 24 <class '_io.TextIOWrapper'> 25 https://www.cnblogs.com/yinzhengjie 26 Python

#!/usr/bin/env python #_*_conding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie import sys f = sys.stderr print(f.seekable(),f.readable(),f.writable(),file=f) sys.stdout.write("尹正杰到此一游!\n") #以上代码执行结果如下: True False True 尹正杰到此一游!
本文来自博客园,作者:尹正杰,转载请注明原文链接:https://www.cnblogs.com/yinzhengjie/p/11062421.html,个人微信: "JasonYin2020"(添加时请备注来源及意图备注,有偿付费)
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。
标签:
Python标准库
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2018-06-21 Hadoop生态圈-Kafka的旧API实现生产者-消费者
2018-06-21 Apache Kafka运维常用命令
2018-06-21 企业级Apache Kafka部署实战篇
2018-06-21 Hadoop生态圈-Kafka的本地模式部署
2018-06-21 Hadoop生态圈-Flume的组件之自定义拦截器(interceptor)
2018-06-21 Hadoop生态圈-Flume的组件之自定义Sink