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
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
尹正杰到此一游!
stderr使用案例
原文地址:https://www.cnblogs.com/yinzhengjie/p/11062421.html