2010-11-18 5 views
6

Existe-t-il un analogue de C# MemoryStream en Python (qui pourrait me permettre d'écrire directement dans la mémoire des données binaires d'une source)? Et comment pourrais-je l'utiliser?Analog MemoryStream en Python

+0

Parlez-vous de 'StringIO'? –

Répondre

10

StringIO est une possibilité: http://docs.python.org/library/stringio.html

Ce module implémente une classe de type fichier, StringIO, qui lit et écrit un tampon de chaîne (également connu sous le nom fichiers de mémoire). Voir la description des objets de fichier pour les opérations (section Objets de fichier). (Pour les chaînes standard, voir str et unicode.) ...

+3

Ou 'cStringIO', qui est le même mais est implémenté en C pour la vitesse. –

3

Si vous utilisez Python> = 3.0 et essayé Adam's answer, vous remarquerez que import StringIO ou import cStringIO les deux donnent une erreur d'importation. C'est parce que StringIO est 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! 
... 

Vous pouvez utiliser StringIO comme si elle était un fichier Python normal: write(), close(), et tout ce que le jazz, avec un getvalue() supplémentaire pour récupérer la chaîne.