我已经习惯了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()
返回一串二进制数据。虽然代码没有显示,但我还需要写入流(我认为不值得发布代码)。
另外,如果可能的话,我也希望新代码能够处理文件。
答案 0 :(得分:17)
您可以使用StringIO.StringIO(或更快cStringIO.StringIO的实例来为内存数据提供类似文件的界面。
答案 1 :(得分:6)
看一下Python的StringIO模块docs here,它可能就是你所追求的。
答案 2 :(得分:5)
查看'StringIO'(将字符串读写为文件)
答案 3 :(得分:5)
使用StringIO。
答案 4 :(得分:1)
我喜欢答案的时机。 (除了我的)
我们可以看到以毫秒为单位的响应时间?
当然
StringIO