iter 妙用
refs: https://www.geeksforgeeks.org/python-iter-method/
今天在对文件进行 md5 生成时,考虑到大文件,需要分块读取,查询相关资料后,iter() 方法可以很巧妙的实现
iter 用法
iter(object[, sentinel])
当第二个参数不存在, 第一个参数必须是支持迭代协议的容器类型对象,例如字典等, 或者是支持序列协议的序列类型对象,例如列表等,如果都不支持则报错。
当第二个参数存在, 即哨兵参数存在,则第一个参数必须是可调用对象,即函数等,以此种方式创建的迭代器对象将会调用object,可调用对象参数调用时不需要参数,如果可调用对象调用后返回值与哨兵对象值相同, 则会引发 stopiteration ,调用结束。
使用示例:
sentinel
1 | import random |
分块读取文件
当读取到 b''
时,表示文件读取完成
1 | import hashlib |