使用Python,如何在内存中读取/写入数据,就像使用文件一样?

Nic*_*ton 11 python file stream

我已经习惯了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
Run Code Online (Sandbox Code Playgroud)

在这种情况下,代码假定self.file是一个文件,打开如下:

file = open('somefile.data, 'r+b')
Run Code Online (Sandbox Code Playgroud)

我怎么可能使用相同的代码,而是做这样的事情:

file = get_binary_data()
Run Code Online (Sandbox Code Playgroud)

其中get_binary_data()返回一串二进制数据.虽然代码没有显示它,但我还需要写入流(我认为不值得发布代码).

另外,如果可能的话,我也希望新代码能够处理文件.

Ale*_*lli 17

您可以使用StringIO.StringIO(或cStringIO.StringIO,更快)的实例为内存数据提供类似文件的接口.


af.*_*af. 6

看一下Python的StringIO模块,这里的文档,这可能就是你所追求的.


Chr*_*heD 5

看看'StringIO'(读写字符串作为文件)