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
Répondre
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, voirstr
etunicode
.) ...
Ou 'cStringIO', qui est le même mais est implémenté en C pour la vitesse. –
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.
Parlez-vous de 'StringIO'? –