¿Cómo creo un objeto similar a un archivo (el mismo tipo de pato que File) con el contenido de una cadena?
                85
            
  
              
        Para Python 2.x, use el módulo StringIO . Por ejemplo:
>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'
Utilizo cStringIO (que es más rápido), pero tenga en cuenta que no acepta cadenas Unicode que no se pueden codificar como cadenas ASCII simples . (Puede cambiar a StringIO cambiando "de cStringIO" a "de StringIO").
Para Python 3.x, use el iomódulo.
f = io.StringIO('foo')
    
io.StringIO(u'foo')usaría estoEn Python 3.0:
import io with io.StringIO() as f: f.write('abcdef') print('gh', file=f) f.seek(0) print(f.read())fuente
withmétodos de enunciado y escritura, impresión, búsqueda, lectura.Esto funciona para Python2.7 y Python3.x:
io.StringIO(u'foo')fuente
Si se espera que su objeto similar a un archivo contenga bytes, la cadena debe codificarse primero como bytes y luego se puede usar un objeto BytesIO en su lugar. En 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')))fuente
Dos buenas respuestas. Agregaría un pequeño truco: si necesita un objeto de archivo real (algunos métodos esperan uno, no solo una interfaz), aquí hay una forma de crear un adaptador:
fuente