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

时间:2013-04-15 03:51:36

标签: python file-io

以下是一些现有代码的重要部分,我正在努力适应自己的用途。

值得注意的是,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))之类的操作。有谁知道这样的事情?

1 个答案:

答案 0 :(得分:9)

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