解析文件类型时出现UnicodeDecodeError——gz或zip文件。

10 浏览
0 Comments

解析文件类型时出现UnicodeDecodeError——gz或zip文件。

这个问题已经有答案了

错误 UnicodeDecodeError: \'utf-8\' 编解码器无法解码字节 0xff 在位置 0:无效的起始字节

我有以下代码来识别给定文件是 gz 或 zip 文件。然而,它返回错误UnicodeDecodeError: \'utf-8\' 编解码器无法解码字节 0x8b 在位置 1:无效的起始字节

你能帮我看看哪里出了问题吗?谢谢您提前的帮助。

    header_dict = {
        "\x1f\x8b\x08": "gz",
        "\x50\x4b\x03\x04": "zip"
    }
    len_max = max(len(x) for x in header_dict)
    with open(filename) as f:
        file_start = f.read(len_max)
    for header, file_type in header_dict.items():
        if file_start.startswith(header):
            return file_type
    return "no match"

admin 更改状态以发布 2023年5月19日
0
0 Comments

以二进制模式打开文件,这样它就不会尝试解码字节。

with open(filename, 'rb') as f:

然后将你的测试字符串也变为二进制:

header_dict = {
    b"\x1f\x8b\x08": "gz",
    b"\x50\x4b\x03\x04": "zip"
}

0