I am using Python 3.2.1 and I can't import the StringIO
module. I use
io.StringIO
and it works, but I can't use it with numpy
's genfromtxt
like this:
x="1 3\n 4.5 8"
numpy.genfromtxt(io.StringIO(x))
I get the following error:
TypeError: Can't convert 'bytes' object to str implicitly
and when I write import StringIO
it says
ImportError: No module named 'StringIO'
when i write import StringIO it says there is no such module.
From What’s New In Python 3.0:
The
StringIO
andcStringIO
modules are gone. Instead, import theio
module and useio.StringIO
orio.BytesIO
for text and data respectively.
.
A possibly useful method of fixing some Python 2 code to also work in Python 3 (caveat emptor):
try:
from StringIO import StringIO ## for Python 2
except ImportError:
from io import StringIO ## for Python 3
Note: This example may be tangential to the main issue of the question and is included only as something to consider when generically addressing the missing
StringIO
module. For a more direct solution the messageTypeError: Can't convert 'bytes' object to str implicitly
, see this answer.