gpt4 book ai didi

python - 为什么我在这里得到 UnicodeDecodeError?

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:16 26 4
gpt4 key购买 nike

我正在尝试制作一个 python 脚本来查找 USB 闪存驱动器中的重复文件。

我遵循的过程是创建一个文件名列表,散列每个文件,然后创建一个逆向字典。然而,在过程中的某个地方,我得到了一个 UnicodeDecodeError。有人可以帮助我了解发生了什么吗?

from os import listdir
from os.path import isfile, join
from collections import defaultdict
import hashlib

my_path = r"F:/"

files_in_dir = [ file for file in listdir(my_path) if isfile(join(my_path, file)) ]
file_hashes = dict()

for file in files_in_dir:
file_hashes[file] = hashlib.md5(open(join(my_path, file), 'r').read()).digest()

inverse_dict = defaultdict(list)

for file, file_hash in file_hashes.iteritems():
inverse_dict[file_hash].append(file)

inverse_dict.items()

我遇到的错误是:

Traceback (most recent call last):
File "C:\Users\Fotis\Desktop\check_dup.py", line 12, in <module>
file_hashes[file] = hashlib.md5(open(join(my_path, file), 'r').read()).digest()
File "C:\Python33\lib\encodings\cp1253.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0xff in position 2227: character maps to <undefined>

最佳答案

您正在尝试读取未使用默认平台编码 (cp1253) 编码的文件。通过以文本模式 (r) 打开文件,Python 3 将尝试将文件内容解码为 un​​icode。您没有指定编码,因此使用平台首选编码。

改为以二进制模式打开文件,使用 rb 作为模式。由于您只计算 MD5 散列(一个需要字节的函数),因此您无论如何都不应该使用文本模式。

关于python - 为什么我在这里得到 UnicodeDecodeError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13689166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com