Python 3.x 在Python 3中计算文件的md5hash
试图计算文件的mdhash,但在Python3中遇到问题。这段代码在Python 2中运行得非常好,但现在我得到了一个UnicodeDecodeError:Python 3.x 在Python 3中计算文件的md5hash,python-3.x,Python 3.x,试图计算文件的mdhash,但在Python3中遇到问题。这段代码在Python 2中运行得非常好,但现在我得到了一个UnicodeDecodeError: ################### #0 Compute md5hash ################### try: with open(fname) as fo: md5 = hashlib.md5() chunk_sz = md5.block_size * 128 d
###################
#0 Compute md5hash
###################
try:
with open(fname) as fo:
md5 = hashlib.md5()
chunk_sz = md5.block_size * 128
data = fo.read(chunk_sz)
while data:
md5.update(data)
data = fo.read(chunk_sz)
md5hash = md5.hexdigest()
except IOError:
md5hash = None
引发的错误是:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 38: invalid start byte
您需要以二进制模式打开文件:
with open(fname, 'rb') as fo:
Python3使用默认编码(在您的系统上是UTF-8)自动解码以文本模式打开的文件