Come creo un oggetto simile a un file (stesso tipo di anatra di File) con il contenuto di una stringa?
Come creo un oggetto simile a un file (stesso tipo di anatra di File) con il contenuto di una stringa?
Risposte:
Per Python 2.x, usa il modulo StringIO . Per esempio:
>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'
Uso cStringIO (che è più veloce), ma nota che non accetta stringhe Unicode che non possono essere codificate come semplici stringhe ASCII . (Puoi passare a StringIO cambiando "da cStringIO" a "da StringIO".)
Per Python 3.x, usa il io
modulo.
f = io.StringIO('foo')
io.StringIO(u'foo')
lo
Se si prevede che l'oggetto simile a un file contenga byte, la stringa deve essere prima codificata come byte, quindi è possibile utilizzare invece un oggetto BytesIO . In Python 3:
from io import BytesIO
string_repr_of_file = 'header\n byline\n body\n body\n end'
function_that_expects_bytes(BytesIO(bytes(string_repr_of_file,encoding='utf-8')))
Due buone risposte. Aggiungerei un piccolo trucco: se hai bisogno di un vero oggetto file (alcuni metodi ne prevedono uno, non solo un'interfaccia), ecco un modo per creare un adattatore: