0

我有以下代码片段

thetype = raw_input("Please enter hash type. md5 or sha1")
hash_type = hashlib.thetype(word).hexdigest()

这会返回错误“AttributeError: 'module' object has no attribute 'thetype'” 我有点理解为什么,但我想我真正要问的是,我该如何解决这个问题?

4

2 回答 2

2

通过使用字典(您也可以使用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已经返回 a str,因此无需str再次调用。

于 2012-07-26T02:25:12.877 回答
0
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!"
于 2012-07-26T03:08:54.763 回答