hashlib を使う。
試しに、MD5 を計算/チェックするスクリプトを書いてみた。
#!/usr/bin/env python # encoding: utf-8 import argparse import hashlib script_version = "0.1.0" def calc_md5(filename): m = hashlib.md5() f = open(filename, "rb") m.update(f.read()) f.close return m.hexdigest() def check_md5(filename, md5): return md5 == calc_md5(filename) parser = argparse.ArgumentParser(description="calc/check MD5.") parser.add_argument("file", metavar="FILE", action="store", help="specify file.") parser.add_argument("-v", "--version", action="version", version=script_version, help="show version and exit") parser.add_argument("-c", "--check", dest="check", action="store_true", help="check MD5") args = parser.parse_args() if args.check: f = open(args.file, "r") s = f.read().strip() f.close() md5, filename = s.split(" ") if check_md5(filename, md5): print filename + " OK" else: print filename + " FAILED" else: filename = args.file print calc_md5(filename) + " " + filename
実行例:
takatoh@apostrophe $ python md5.py sample.zip > a.md5 takatoh@apostrophe $ cat a.md5 72f163b717dbe53cd58902713dc10152 sample.zip takatoh@apostrophe $ python md5.py -c a.md5 sample.zip OK