我使用的是Python 3.2.1,我不能导入StringIO模块。我使用
io。StringIO和它的工作,但我不能使用numpy的genfromtxt像这样:
x="1 3\n 4.5 8"
numpy.genfromtxt(io.StringIO(x))
我得到以下错误:
TypeError: Can't convert 'bytes' object to str implicitly
当我输入StringIO时,它会说
ImportError: No module named 'StringIO'
当我写导入StringIO时,它说没有这样的模块。
Python 3.0新增功能:
StringIO和cStringIO模块消失了。相反,导入io . xml文件
模块并使用io。StringIO或io。BytesIO用于文本和数据
分别。
.
修复一些Python 2代码,使其在Python 3中也能正常工作的一个可能有用的方法(买者自负):
try:
from StringIO import StringIO ## for Python 2
except ImportError:
from io import StringIO ## for Python 3
注意:这个例子可能与问题的主要问题无关,只是作为在处理缺少的StringIO模块时需要考虑的问题。对于更直接的解决方案,消息TypeError:不能隐式地将'bytes'对象转换为str,请参阅这个答案。
为了从这里举例子
使用Python 3.5.2,你可以重写如下:
import io
data =io.BytesIO(b"1, 2, 3\n4, 5, 6")
import numpy
numpy.genfromtxt(data, delimiter=",")
更改的原因可能是文件的内容是数据(字节),直到以某种方式解码才成为文本。Genfrombytes可能是一个比genfromttxt更好的名字。