2010-11-18 12 views
6

Czy w Pythonie istnieje jakiś analog C# MemoryStream (który może pozwolić mi zapisywać dane binarne z jakiegoś źródła bezpośrednio do pamięci)? I w jaki sposób chciałbym go użyć?Analog MemoryStream w Pythonie

+0

Pytasz o "StringIO"? –

Odpowiedz

10

StringIO jest jedna możliwość: http://docs.python.org/library/stringio.html

Moduł implementuje klasę plikopodobny, StringIO, który odczytuje i zapisuje bufor ciąg (znany również jako plików pamięci). Zobacz opis obiektów plików dla operacji (sekcja Obiekty plików). (Dla standardowych strun, zobacz str i unicode.) ...

+3

Lub 'cStringIO', który jest taki sam, ale jest zaimplementowany w C dla prędkości. –

3

Jeśli używasz Pythona> = 3,0 i starał się Adam's answer, można zauważyć, że import StringIO lub import cStringIO zarówno dać błąd importu. Wynika to z tego, że StringIO to 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! 
... 

Można użyć StringIO tak jakby był to zwykły plik Python: write(), close() i wszystko, jazz, z dodatkowym getvalue() aby pobrać ciąg.