2010-11-18 18 views
6

¿Existe algún análogo de C# MemoryStream en Python (que me podría permitir escribir datos binarios de alguna fuente directamente en la memoria)? ¿Y cómo podría usarlo?Analizador MemoryStream en Python

+0

¿Estás preguntando sobre 'StringIO'? –

Respuesta

10

StringIO es una posibilidad: http://docs.python.org/library/stringio.html

Este módulo implementa una clase de tipo fichero, StringIO, que lee y escribe un búfer de cadena (también conocido como archivos de memoria ). Consulte la descripción de los objetos de archivo para las operaciones (sección Objetos de archivo). (Para las cadenas estándar, consulte str y unicode.) ...

+3

O 'cStringIO', que es el mismo pero está implementado en C para velocidad. –

3

Si está utilizando Python> = 3.0 y probado Adam's answer, usted notará que import StringIO o import cStringIO ambos dan un error de importación. Esto se debe a que StringIO es now part of the io module.

Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import StringIO 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named 'StringIO' 
>>> # Huh? Maybe this will work... 
... 
>>> import cStringIO 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named 'cStringIO' 
>>> # Whaaaa...? 
... 
>>> import io 
>>> io.StringIO 
<class '_io.StringIO'> 
>>> # Oh, good! 
... 

Puede utilizar StringIO al igual que si se tratara de un archivo de Python normal: write(), close(), y todo eso, con un adicional de getvalue() a recuperar la cadena.