使用 chardet 判断文件编码需要注意的坑——过大的文件会导致高耗时

chardet 判断 stream:bytes 的时候,要短,但是不能太短

越短越不准,越长越慢

判断一个 15MB 的 txt 文件,需要耗时 5-20 秒

所以,我建议,取前 256 个字节来判断,可以平衡速度和准确率

def check_encoding(stream: bytes) -> str | None:
    encoding = chardet.detect(stream[:256]).get('encoding', None)
    return encoding

这样(指取前 256 字节)大概只需要 10-30 ms 就可以判断出文件编码

你可能感兴趣的:(python)