2008-09-26 5 views

Respuesta

81

Para Python 2.x, utilice 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 es así accept Unicode strings that cannot be encoded as plain ASCII strings. (Puede cambiar a StringIO cambiando "de cStringIO" a "de StringIO").

Para Python 3.x, utilice el módulo io.

f = io.StringIO('foo') 
+1

Ahora hay una razón para usar cStringIO: cStringIO no admite cadenas de caracteres unicode. –

+3

Creo que una mejor idea es hacer 'importar cStringIO como StringIO'. De esta forma, si necesita cambiar a la implementación de python puro por alguna razón, solo necesita cambiar una línea. –

+0

Esto también funciona para Python2.7: 'io.StringIO (u'foo ')' Usaría esto – guettli

22

En Python 3.0:

import io 

with io.StringIO() as f: 
    f.write('abcdef') 
    print('gh', file=f) 
    f.seek(0) 
    print(f.read()) 
+0

@ABB la respuesta aceptada muestra dicho uso ya. Mi respuesta es complementaria: demuestra el enunciado 'con' y los métodos de escritura, impresión, búsqueda, lectura. – jfs

2

Dos buenas respuestas. Yo añadiría un pequeño truco - si necesita un objeto de archivo real (algunos métodos esperan que uno, no sólo una interfaz), aquí es una manera de crear un adaptador:

+0

"Página no encontrada" - http://www.rfk.id.au/software/projects/filelike/api/filelike.htm – jfs

+0

Qué vergüenza. No se puede encontrar el original ... –

+1

Parece estar copia de seguridad ahora (7 años después;) –

1

Este funciona para Python2.7 y Python3.x:

io.StringIO(u'foo') 
Cuestiones relacionadas