Jeg bruker Python 3.2.1, og jeg kan ikke importere modulen StringIO
. Jeg bruker
io.StringIO
og det fungerer, men jeg kan ikke bruke det med numpy
genfromtxt
som dette:
x="1 3\n 4.5 8"
numpy.genfromtxt(io.StringIO(x))
Jeg får følgende feil:
TypeError: Can't convert 'bytes' object to str implicitly
og når jeg skriver import StringIO
står det følgende
ImportError: No module named 'StringIO'
når jeg skriver import StringIO står det at det ikke finnes en slik modul.
Modulene StringIO
og cStringIO
er borte. Importer i stedet modulen io
modulen og bruk io.StringIO
eller io.BytesIO
for henholdsvis tekst og data.
for henholdsvis tekst og data.
.
En muligens nyttig metode for å fikse noe Python 2-kode slik at den også fungerer i Python 3 (caveat emptor):
try:
from StringIO import StringIO ## for Python 2
except ImportError:
from io import StringIO ## for Python 3
Note: Dette eksemplet kan være tangentielt til hovedproblemet i spørsmålet og er bare inkludert som noe å vurdere når man generisk adresserer den manglende
StringIO
-modulen. For en mer direkte løsning er meldingen `TypeError: Can't convert 'bytes' object to str implicitly", se dette svaret.
I mitt tilfelle har jeg brukt:
from io import StringIO
På Python 3 forventer numpy.genfromtxt
en bytestrøm. Bruk følgende:
numpy.genfromtxt(io.BytesIO(x.encode()))