当前位置: 首页 > 后端技术 > Python

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

时间:2023-03-26 15:13:21 Python

chardet判断stream:bytes时要短,但不能太短,越短越多不准确,时间越长越慢,判断一个15MB的txt文件需要5-20秒。所以我建议用前256字节来判断,可以兼顾速度和准确率。defcheck_encoding(流:字节)->str|None:encoding=chardet.detect(stream[:256]).get('encoding',None)返回编码(指前256字节)判断文件编码只需要10-30ms左右。还有一点需要注意:有些明显是gbk编码的文件,chardet会说是gb2312。这会导致解码时出错。部分字符无法解码,因为gb2312str|无:编码=chardet。detect(stream[:256]).get('encoding',None)ifencoding.lower()=='gb2312'orencoding.lower()=='gbk':return'gb18030'返回编码