我輸入了用於計算md5散列值的代碼,我希望在用戶單擊按鈕時返回散列值。但是,當我點擊按鈕時,出現「TypeError:強制爲Unicode:需要字符串或緩衝區,找到函數」錯誤。我試圖將哈希值轉換爲字符串,但它沒有解決它。md5散列值出錯
def openfile():
filename = askopenfilename(parent=root)
f = open(filename)
f.read()
print (filename)
def hashmd5():
md5 = hashlib.md5()
with open(openfile, "rb") as f:
for block in iter(lambda: f.read(128), ""):
md5.update(block)
print (m.hexdigest)
def helloCallBack():
tkMessageBox.showinfo("Calculate MD5")
B = Button(text ="Calculate MD5", command = hashmd5)
B.pack()
更新:openfile
後
def openfile():
filename = askopenfilename(parent=root)
f = open(filename)
f.read()
print (filename)
def savefile(self):
filename = tkFileDialog.asksaveasfilename(**self.file_opt)
if filename:
return open(filename, 'w')
def hashmd5():
md5 = hashlib.md5()
with (filename), "rb") as f:
for block in iter(lambda: openfile.read(128), ""):
md5.update(block)
print (md5.hexdigest)
對不起。我沒有意識到我遺漏了括號。我在我的hashmd5函數中刪除了打開的文件代碼,但在此之後我仍然有錯誤。 – JoanT
什麼樣的錯誤?請更新代碼段的縮進!我想你想'打印md5.heaxidgest'而不是'm.hexdigest' – fodma1
好吧。我已經稍微改變了代碼。我仍然有錯誤「NameError:全局名稱'文件名'未定義」 – JoanT