美文网首页python
关于Python 2.x 与Python3.x中StringIO

关于Python 2.x 与Python3.x中StringIO

作者: ThompsonHen | 来源:发表于2020-01-16 15:44 被阅读0次

    最近在帮导师做科研项目遇到一个问题,就是在Python 2.x中的StringIO模块在Python 3.x中找不到了。我查了好久的资料又问了一些同学,才发现这个模块被并入io 中了,所以我重新从io模块中import了StringIO。

    from io import StringIO
    

    使用后发现仍然报错,就随手print了一下,发现要输出的type是Byte类型的,而StringIO只能处理字符串类型的数据。
    这可把我愁坏了,因为参考代码给出的源码是这样的:

    def read_png(res):
        import StringIO, PIL.Image
        img = PIL.Image.open(StringIO.StringIO(res))
        return np.asarray(img)
    

    显然,他应该是想先把res强制转换成字符串类型,再去读这个数据。
    可是我找了半天也没找到StringIO类的下面有个StringIO的属性,我太南了!
    上网找了半天,发现好像没有人遇到跟我相似的问题!

    image.png

    然后在io模块中找了一下,发现有个BytesIO的类。


    image.png

    咦,这不正好用来处理我那个Byte类型的数据嘛!!!
    然后我改写了刚才的参考代码:

    def read_png(res):
    
        import PIL.Image
        im = io.BytesIO(res)
    
        img = PIL.Image.open(im)
    
        plt.imshow(img)
        plt.show()
    

    成功啦!!!

    相关文章

      网友评论

        本文标题:关于Python 2.x 与Python3.x中StringIO

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