python - 无法将变量传递给函数

标签 python function

我正在尝试构建一个函数来计算文件的哈希值。该函数接受参数、文件名和要生成的算法:

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/

相关文章:

python - 如何创建带有分数的查询字典/列表,然后随机选择一些来将分数相加?

iphone - 未声明 - 'first use in function'

function - 从库项目调用 android 应用程序项目中的辅助函数

python - 函数内多列的 For 循环替代方案(pandas)

python - 确定 easy_install/setuptools 的版本

python - 如何在python的 Mechanize 模块中使用SSH代理? (可以这样做吗?)

python - 如何在 Django 测试中强制交易中的竞争条件?

python - wxPython Dirdialog 总是返回同一个目录

元组列表上的python映射

python - 为什么这个递归代码有效?