次のコードスニペットがあります
thetype = raw_input("Please enter hash type. md5 or sha1")
hash_type = hashlib.thetype(word).hexdigest()
これにより、「AttributeError: 'module' オブジェクトに属性 'thetype' がありません」というエラーが返されます。
辞書を使用する ( を使用することもできますが、これによりgetattr
、他の無関係な属性を取得する可能性が生じます)。
d = {"md5" : hashlib.md5, "sha1" : hashlib.sha1}
hash_type = raw_input("Please enter hash type. md5 or sha1")
d[hash_type].hexdigest()
また、raw_input
すでに を返しているstr
ため、再度呼び出す必要はありませんstr
。
import hashlib
thetype = raw_input("Please enter hash type. %r"%(hashlib.algorithms,))
# 2.7 or later... just catch the exception from .new(thetype) for older versions.
if thetype in hashlib.algorithms:
print hashlib.new(thetype)('some data').hexdigest()
else:
print "No Way!"