我正在尝试创建文件的校验和,并将校验和保存为相同的文件.所以我监视文件,如果校验和发生变化,那么就做一些事情.
这是校验和
对于test.txt
contents: a
checksum: dd18bf3a8e0a2a3e53e2661c7fb53534
Run Code Online (Sandbox Code Playgroud)
我编辑文件:
contents: aa
checksum: dd18bf3a8e0a2a3e53e2661c7fb53534
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
python -c 'import hashlib;print hashlib.md5("test.txt").hexdigest()'
Run Code Online (Sandbox Code Playgroud)
为什么校验和是一样的?
为什么校验和相同?
因为您正在计算相同内容的哈希值test.txt
.
这是一个通用工具(许多Linux和UNIX平台上可用的广泛可用的md5sum
CLI工具的克隆),可以很好地扩展大文件.
md5sum.py:
#!/usr/bin/env python
"""Tool to compuete md5 sums of files"""
import sys
from hashlib import md5
def md5sum(filename):
hash = md5()
with open(filename, "rb") as f:
for chunk in iter(lambda: f.read(128 * hash.block_size), b""):
hash.update(chunk)
return hash.hexdigest()
def main():
if len(sys.argv) < 2:
print "Usage: md5sum <filename>"
raise SystemExit(1)
print md5sum(sys.argv[1])
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
从以下网站借鉴:https://bitbucket.org/prologic/tools/src/tip/md5sum
您可以尝试检查hashlib.md5()
import hashlib
[(fname, hashlib.md5(open(fname, 'rb').read()).digest()) for fname in fnamelst]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10706 次 |
最近记录: |