Аналог MemoryStream в Python - PullRequest
7 голосов
/ 18 ноября 2010

Существует ли какой-либо аналог C # MemoryStream в Python (который мог бы позволить мне записывать двоичные данные из какого-либо источника прямо в память)?И как мне его использовать?

Ответы [ 2 ]

10 голосов
/ 18 ноября 2010

StringIO - это одна возможность: http://docs.python.org/library/stringio.html

Этот модуль реализует файловый класс StringIO, который читает и записывает строковый буфер (также известный как файлы памяти ). См. Описание файловых объектов для операций (раздел Файловые объекты ). (Стандартные строки см. str и unicode.) ...

3 голосов
/ 25 октября 2014

Если вы используете Python> = 3.0 и опробовали ответ Адама , вы заметите, что import StringIO или import cStringIO оба выдают ошибку импорта. Это связано с тем, что StringIO теперь является частью io модуля .

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

Вы можете использовать StringIO так же, как если бы это был обычный файл Python: write(), close() и весь этот джаз, с дополнительным getvalue() для извлечения строки.

...