如何使用Python在内存中读写数据像文件一样?

11 投票
5 回答
12166 浏览
提问于 2025-04-15 16:53

我习惯用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 个回答

5

使用 StringIO

6

看看Python的StringIO模块,这里有相关文档,这可能正是你需要的东西。

17

你可以使用一个叫做 StringIO.StringIO 的东西(或者更快的 cStringIO.StringIO)来让内存中的数据像文件一样使用。

撰写回答