美文网首页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

    最近在帮导师做科研项目遇到一个问题,就是在Python 2.x中的StringIO模块在Python 3.x中找不...

  • Python的学习建议!

    关于Python python有两个版本,一个Python 2.x,一个Python3.x;目前,Python3....

  • python入门 第一天 初识

    python版本2.x和python3.x 文件申明和字符编码# !usr/bin/env python# ! -...

  • Python3 解释器

    Linux/Unix的系统上,一般默认的 python 版本为 2.x,我们可以将 python3.x 安装在 /...

  • Python3 解释器

    Linux/Unix的系统上,一般默认的 python 版本为 2.x,我们可以将 python3.x 安装在/u...

  • windows下多个python版本共存 及安装Django

    了解python的人都知道python有2.x版本和3.x版本,而python3.x版本不向下兼容,但是根据具体的...

  • 2-基本语法

    python的安装 目前python有2个大的版本:2.X版本和3.X版本 我们的课程是基于python3.X的最...

  • python3.6.4安装

    目前大部分都是使用Python3.x,但是有些Linux主机上依旧是2.x版本,所以需要将Linux的Python...

  • 安装python3.6

    目前大部分都是使用Python3.x,但是有些Linux主机上依旧是2.x版本,所以需要将Linux的Python...

  • 解决python2与python3共存问题

    python现在主要使用的有2个版本:2.x和3.x,而这2个版本的语法却有很多的不同,python3.x并不是向...

网友评论

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

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