以下是一个校验文件的函数,algorithm_name
是哈希类型的名称,checksum
是已知的校验码。
def iter_check(filepath: str | bytes | os.PathLike[str | bytes], algorithm_name: str, checksum: str):
algorithm = get_algorithm(algorithm_name)
with open(filepath, mode='rb') as file:
algorithm_instance = algorithm()
for block in iter(partial(file.read, 1024), b''):
yield block
algorithm_instance.update(block)
return algorithm_instance.hexdigest() == checksum
其本质上是一个生成器,每一次迭代都会yield
一个block
。那么,能否取回最后由return
返回的校验结果?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.