无法将变量传递给函数

And*_*y.l 1 python function

我正在尝试构建一个计算文件散列的函数.该函数采用参数,文件名和生成的算法:

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)