我正在尝试构建一个函数来计算文件的哈希值。该函数接受参数、文件名和要生成的算法:
def getHashValue(fName, Hash):
f = open(fName, 'rb')
hashvalue = hashlib.Hash(f.read()).hexdigest
f.close()
print(fName + str(Hash) + hashvalue)
我的问题是我无法使 Hash 参数起作用。我的想法是如果我添加 md5 我会得到这个:
hashvalue = hashlib.md5(f.read()).hexdigest
安迪.l
最佳答案
不要在函数内部使用 hashlib。只需将函数作为参数并使用它。
def getHashValue(fName,Hash):
f = open(fName,'rb')
hashvalue = Hash(f.read()).hexdigest
f.close()
print(fName + str(Hash) + hashvalue)
然后当你调用这个函数时,使用:
getHashValue(filename, hashlib.md5)
如果要从字符串中获取散列函数,请使用 getattr。
hashvalue = getattr(hashlib, Hash)(f.read()).hexdigest
并调用这个:
getHashValue(filename, 'md5')
关于python - 无法将变量传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5184219/