开发者社区> 问答> 正文

固定大小记录的文件迭代

你想在一个固定长度记录或者数据块的集合上迭代,而不是在一个文件中一行一行的迭代。

展开
收起
哦哦喔 2020-04-17 12:24:51 1011 0
1 条回答
写回答
取消 提交回答
  • 通过下面这个小技巧使用 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 对象是一个可迭代对象,它会不断的产生固定大小的数据块,直到文件末尾。 要注意的是如果总记录大小不是块大小的整数倍的话,最后一个返回元素的字节数会比期望值少。
    
    2020-04-17 12:25:00
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
用计算和数据去改变整个世界 立即下载
4个迭代,从批量交...1573957773.pdf 立即下载
重新定义计算的边界 立即下载