将二进制数据视为文件对象?

问题描述

这就是StringIO(在Python 2中)和io.BytesIO(在Python 3中)的用途。

解决方法

这是一些现有代码的重要组成部分,我正在尝试将这些代码适应自己的用途。

值得注意的是,这self.archive会导致文件很大,并且raw_file是从此巨型文件中(痛苦地)提取的二进制数据。

with open(self.archive,"rb") as f:
    f.seek(offset)
    raw_file = start + f.read(dlen - len(start))
    ...
    f.write(raw_file)

现有代码将类似档案的文件的内容提取到磁盘,但是我只需要从该档案中读取这些存储的文件(如果有任何意义)。

我需要使用Pygame从该文件中读取数百mbs的数据,其中大多数是图像,方法是使用,例如pygame.image.load()。与其让这段代码将文件的所有内容都写到磁盘上,然后以“非二进制”的形式再次读取它,我不如直接做类似的事情pygame.image.load(toVirtualFileObject(raw_file))。有人知道这样的事吗?