zoukankan      html  css  js  c++  java
  • 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使用案例
  • 相关阅读:
    原码, 反码, 补码的基础概念和计算方法.
    QoS in RoCE
    TCP拥塞控制算法之NewReno和SACK
    intel xeon家族介绍
    Intel 处理器架构演进 转
    IP报文头详解
    高性能网络服务器编程:为什么linux下epoll是最好,Netty要比NIO.2好?
    tcp拥塞控制 tahoe reno new reno sack
    TCP/IP详解--拥塞控制 慢启动 快恢复 拥塞避免
    LTTng 简介&使用实战
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/11062421.html
Copyright © 2011-2022 走看看