在Python 2中,人們可以通過只是運行哈希的字符串:在Python 3中散列文件?
someText = "a"
hashlib.sha256(someText).hexdigest()
但是在Python 3,它需要被編碼:
someText = "a".encode("ascii")
hashlib.sha256(someText).hexdigest()
但是當我嘗試這樣一個文件:
f = open(fin, "r")
sha = hashlib.sha256()
while True:
data = f.read(2 ** 20).encode("ascii")
if not data:
break
sha.update(data)
f.close()
我得到這個在許多文件:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe1 in position 8: invalid continuation byte
我認爲這是因爲它是一個二進制文件,可能無法轉換爲ASCII。
如何在沒有此問題的情況下對文件進行編碼?
嘗試用'open(fin,「rb」)'以二進制模式打開文件。 – BrenBarn
@BrenBarn完美地工作,你應該回答這個問題。 –