这是一些现有代码的重要组成部分,我正在尝试将这些代码适应自己的用途。
值得注意的是,这self.archive会导致文件很大,并且raw_file是从此巨型文件中(痛苦地)提取的二进制数据。
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))。有人知道这样的事吗?
pygame.image.load()
pygame.image.load(toVirtualFileObject(raw_file))
这就是StringIO(在Python 2中)和io.BytesIO(在Python 3中)的用途。
StringIO
io.BytesIO