Используя Python, как мне читать / записывать данные в память, как если бы я работал с файлом?

Я привык к C++ и строю свои классы / функции обработки данных для обработки потоковых объектов вместо файлов. Я хотел бы знать, как я мог бы изменить следующий код, чтобы он мог обрабатывать поток двоичных данных в памяти, а не дескриптор файла.

def get_count(self):
    curr = self.file.tell()
    self.file.seek(0, 0)
    count, = struct.unpack('I', self.file.read(c_uint32_size))
    self.file.seek(curr, 0)
    return count

В этом случае код предполагает self.file это файл, открытый так:

file = open('somefile.data, 'r+b')

Как я могу использовать тот же код, но вместо этого сделать что-то вроде этого:

file = get_binary_data()

куда get_binary_data() возвращает строку двоичных данных. Хотя код не показывает его, мне также нужно записать в поток (я не думал, что для этого стоит опубликовать код).

Также, если возможно, я бы хотел, чтобы новый код также обрабатывал файлы.

5 ответов

Решение

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

Посмотрите на модуль Python StringIO, здесь документы, которые могут быть в значительной степени то, что вы ищете.

Используйте StringIO.

Посмотрите на 'StringIO' (чтение и запись строк в виде файлов)

Мне нравится время ответа. (кроме моего)

Мы можем видеть время отклика в миллисекундах?

конечно StringIO

Другие вопросы по тегам