固定大小记录的文件迭代-2021护网行动面试题目
5.8固定大小记录的文件迭代问题你想在一个固定长度记录或者数据块的集合上迭代,而不是在一个文件中一行一行的迭代。解决方案通过下面这个小技巧使用iter和functools.partial()函数: from functools import partial RECORD_SIZE = 32 with open('somefile.data', 'rb') as f: records = iter(partial(f.read, RECORD_SIZE), b'') for r in records: ...这个例子中的records对象是一个可迭代对象,它会不断的产生固定大小的数据块,直到文件末尾。要注意的是如果总记录大小不是块大小的整数倍的话,最后一个返回元素的字节数会比期望值少。讨论iter()函数有一个鲜为人知的特性就是,如果你给它传递一个可调用对象和一个标记值,它会创建一个迭代器。这个迭代器会一直调用传入的可调用对象直到它返回标
2.01MB
文件大小:
评论区