我有一个简单的open
调用创建的文件描述符。我希望将它传递给单独的函数,同时保持其在函数范围内的位置。
假设我有这两个功能:
OFFSET_TABLE_OFS = 64
def next_ofs(handle):
handle.seek(OFFSET_TABLE_OFS)
while True:
ofs = struct.unpack('I', handle.read(4))
if ofs == 0xFFFF:
return None
yield ofs
def parse_at(handle, ofs):
handle.seek(ofs)
parsed_stuff = handle.read(256)
这里的问题是,如果我有一个非常长的偏移表并且不想或者不需要一次加载所有它。在一个小应用程序中,很容易在继续读取之前解析之后简单地寻找已知的偏移量,但这可能有很多复杂性。有没有更好的建议来处理这个问题?