Используя 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