Python入门篇-StringIO和BytesIO
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.StringIO(用于文本处理)
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:[email protected] """
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
https://www.cnblogs.com/yinzhengjie https://www.cnblogs.com/yinzhengjie
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:[email protected] """
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对象
#!/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:[email protected] """
file-like对象:
类文件对象,可以像文件对象一样操作
socket对象、输入输出对象(stdin、stdout)都是类文件对象
""" from sys import stdout f = stdout #引用标准输出 print(type(f)) f.write('https://www.cnblogs.com/yinzhengjie\nPython') #调用标准输出对象 #以上代码输出结果如下:
<class '_io.TextIOWrapper'>
https://www.cnblogs.com/yinzhengjie
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
尹正杰到此一游!
stderr使用案例