33.Python编程:StringIO和BytesIO

作者: TensorFlow开发者 | 来源:发表于2018-07-15 00:07 被阅读1次

    前言

    前面学习了Python中的文件读写,但很多时候,数据读写不一定是文件,也可以在内存中读写。今天就来学习一下如何在内存中读写数据。主要涉及两个类:StringIO和BytesIO。

    StringIO

    StringIO就是在内存中读写str。要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可:

    from io import StringIO, BytesIO
    
    f = StringIO()
    f.write("hello")
    f.write(" ")
    
    f.write("world")
    
    print("内存中的数据:{}".format(f.getvalue()))
    

    运行结果:

    内存中的数据:hello world
    

    说明:getvalue()方法用于获得写入后的str。
    也可以用一个str初始化StringIO,然后,像读文件一样读取:

    f = StringIO("Hello world!".upper())
    print("内存中的数据:{}".format(f.read()))
    

    运行结果:

    内存中的数据:HELLO WORLD!
    

    BytesIO

    StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。BytesIO实现了在内存中读写bytes,我们创建一个BytesIO,然后写入一些bytes:

    b = BytesIO()
    b.write("高铁即将实行电子票机制".encode("utf-8"))
    print(b.getvalue())
    

    运行结果:

    b'\xe9\xab\x98\xe9\x93\x81\xe5\x8d\xb3\xe5\xb0\x86\xe5\xae\x9e\xe8\xa1\x8c\xe7\x94\xb5\xe5\xad\x90\xe7\xa5\xa8\xe6\x9c\xba\xe5\x88\xb6'
    

    请注意,写入的不是str,而是经过UTF-8编码的bytes。

    和StringIO类似,可以用一个bytes初始化BytesIO,然后,像读文件一样读取:

    b = BytesIO("中国高铁是中国的一张名片".encode("utf-8"))
    print(b.read())
    

    运行结果:

    b'\xe4\xb8\xad\xe5\x9b\xbd\xe9\xab\x98\xe9\x93\x81\xe6\x98\xaf\xe4\xb8\xad\xe5\x9b\xbd\xe7\x9a\x84\xe4\xb8\x80\xe5\xbc\xa0\xe5\x90\x8d\xe7\x89\x87'
    

    小结

    本节内容简单,主要学习了如何在内存中读写数据,涉及两个类:StringIO和BytesIO。


    更多了解,可关注微信公众号:人人懂编程


    微信公众号:人人懂编程

    相关文章

      网友评论

        本文标题:33.Python编程:StringIO和BytesIO

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