2010-11-18 15 views
6

Gibt es ein Analog von C# MemoryStream in Python (das könnte mir erlauben, binäre Daten aus einer Quelle direkt in den Speicher schreiben)? Und wie würde ich es benutzen?MemoryStream analog in Python

+0

Fragen Sie nach 'StringIO'? –

Antwort

10

StringIO ist eine Möglichkeit: http://docs.python.org/library/stringio.html

Dieses Modul implementiert eine dateiähnliche Klasse, StringIO, die einen String-Puffer (auch als Speicherdateien bekannt) liest und schreibt. Siehe Beschreibung der Dateiobjekte für Operationen (Abschnitt Dateiobjekte). (Standardzeichenfolgen finden Sie str und unicode.) ...

+3

Oder 'cStringIO', das ist das gleiche, ist aber in C für Geschwindigkeit implementiert. –

3

Wenn Sie Python verwenden> = 3,0 und ausprobiert Adam's answer, werden Sie feststellen, dass import StringIO oder import cStringIO beide einen Importfehler geben. Dies liegt daran, dass StringIO now part of the io module ist.

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! 
... 

können Sie StringIO verwenden, als ob es sich um eine normale Python-Datei war: write(), close() und alles, Jazz, mit einer zusätzlichen getvalue() die Zeichenfolge abzurufen.