美文网首页
Python3 - 字符串的I/O操作

Python3 - 字符串的I/O操作

作者: 惑也 | 来源:发表于2018-12-22 20:34 被阅读15次

    问题

    使用操作类文件对象的程序来操作文本或二进制字符串。

    解决方案

    使用 io.StringIO()io.BytesIO() 类来创建类文件对象操作字符串数据。比如:

    import io
    
    s = io.StringIO()
    print(s)
    <_io.StringIO object at 0x108b18dc8>
    
    s.write('Hello World!\n')
    print(s.getvalue())
    Hello World!
    
    print('This is a test.', file = s)
    print(s.getvalue())
    Hello World!
    This is a test.
    

    io.StringIO只能用于文本。如果要操作二进制数据,要使用 io.BytesIO类来代替。比如:

    ss = io.BytesIO()
    print(ss)
    <_io.BytesIO object at 0x10d0a1b48>
    
    ss.write(b'binary data')
    print(ss.getvalue())
    b'binary data'
    

    讨论

    当需要模拟一个普通文件时,StringIOBytesIO 类是很有用的。 比如,在单元测试中,可以使用 StringIO 来创建一个包含测试数据的类文件对象, 这个对象可以被传给某个参数为普通文件对象的函数。

    需要注意的是,StringIOBytesIO 实例并没有正确的整数类型的文件描述符。 因此,它们不能在那些需要使用真实的系统级文件,如文件,管道或者是套接字的程序中使用。

    相关文章

      网友评论

          本文标题:Python3 - 字符串的I/O操作

          本文链接:https://www.haomeiwen.com/subject/rkdwkqtx.html