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