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 Python") 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 Python") sio.seek(0) print(sio.readline()) print(sio.getvalue()) #获取全部内容。跟文件指针没有关系,即无视指针,输出全部内容 sio.close() #以上代码执行结果如下: True True True b'https://www.cnblogs.com/yinzhengjie ' b'https://www.cnblogs.com/yinzhengjie Python'
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 Python') #调用标准输出对象 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("尹正杰到此一游! ") #以上代码执行结果如下: True False True 尹正杰到此一游!