Python 3.2.1 kullanıyorum ve StringIO
modülünü içe aktaramıyorum. Ben kullanıyorum
io.StringIOve çalışıyor, ancak
numpy'nin
genfromtxt` ile bu şekilde kullanamıyorum:
x="1 3\n 4.5 8"
numpy.genfromtxt(io.StringIO(x))
Aşağıdaki hatayı alıyorum:
TypeError: Can't convert 'bytes' object to str implicitly
ve import StringIO
yazdığımda şöyle diyor
ImportError: No module named 'StringIO'
import StringIO yazdığımda böyle bir modül olmadığını söylüyor.
Python 3.0'daki Yenilikler]1'den:
StringIO
vecStringIO
modülleri artık yok. Bunun yerine,io
modülünü kullanın ve metin ve veriler içinio.StringIO
veyaio.BytesIO
kullanın sırasıyla.
.
Bazı Python 2 kodlarını Python 3'te de çalışacak şekilde düzeltmek için muhtemelen yararlı bir yöntem (caveat emptor):
try:
from StringIO import StringIO ## for Python 2
except ImportError:
from io import StringIO ## for Python 3
Not: Bu örnek, sorunun ana konusuna teğet geçebilir ve yalnızca eksik
StringIO
modülünü genel olarak ele alırken göz önünde bulundurulması gereken bir şey olarak dahil edilmiştir. Daha doğrudan bir çözüm içinTypeError: Can't convert 'bytes' object to str implicitly
mesajı için bu cevaba bakınız.
Benim durumumda ben kullandım:
from io import StringIO
Python 3te
numpy.genfromtxt` bir bayt akışı bekler. Aşağıdakileri kullanın:
numpy.genfromtxt(io.BytesIO(x.encode()))