如何使用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 个回答
5
使用 StringIO。
6
看看Python的StringIO模块,这里有相关文档,这可能正是你需要的东西。
17
你可以使用一个叫做 StringIO.StringIO 的东西(或者更快的 cStringIO.StringIO)来让内存中的数据像文件一样使用。