我正在尝试构建一个计算文件散列的函数.该函数采用参数,文件名和生成的算法:
def getHashValue(fName, Hash):
f = open(fName, 'rb')
hashvalue = hashlib.Hash(f.read()).hexdigest
f.close()
print(fName + str(Hash) + hashvalue)
Run Code Online (Sandbox Code Playgroud)
我的问题是我无法让Hash参数起作用.我的想法是,如果我发布md5,我会得到这个:
hashvalue = hashlib.md5(f.read()).hexdigest
Run Code Online (Sandbox Code Playgroud)
Andy.l
Jon*_*erg 10
不要在函数内部使用hashlib.只需将该函数作为参数并使用它.
def getHashValue(fName,Hash):
f = open(fName,'rb')
hashvalue = Hash(f.read()).hexdigest
f.close()
print(fName + str(Hash) + hashvalue)
Run Code Online (Sandbox Code Playgroud)
然后当你调用这个函数时,使用:
getHashValue(filename, hashlib.md5)
Run Code Online (Sandbox Code Playgroud)
如果要从字符串中获取哈希函数,请使用getattr.
hashvalue = getattr(hashlib, Hash)(f.read()).hexdigest
Run Code Online (Sandbox Code Playgroud)
并称之为:
getHashValue(filename, 'md5')
Run Code Online (Sandbox Code Playgroud)