python3检测⽂件的编码格式_判断⽂件编码⽅式⼀、实验环境
1.Windows10x64
2.anaconda4.6.9 + python
3.7.1(anaconda集成,不需单独安装)
⼆、任务需求
封装API,⽤于解析各式⽂件,获取需要的结果值。
三、问题描述
解析某个⼯具⽣成的Log,解析代码如下:
with open("BIT_log_191230_164145.log","r") as f:
f = f.readlines()
python脚本读取后全部是乱码;或者前半部分正常,后半部分程序报错。报错信息如下:
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xff in position
四、解决⽅式
4.1 获取⽂件编码⽅式
右击⽂件,选择使⽤UltraEdit打开
单击选择 UltraEdit -> 编辑 -> ⼗六进制功能 -> ⼗六进制编辑 或者按Ctrl + H
根据⽂件头判断⽂件编码⽅式
根据如下清单进⾏判断
EF BB BF    UTF-8
FE FF     UTF-16/UCS-2, little endian
python怎么读取txt
FF FE     UTF-16/UCS-2, big endian
FF FE 00 00  UTF-32/UCS-4, little endian
00 00 FE FF  UTF-32/UCS-4, big-endian
该⽅式并⾮100%有效,因为⽂件头不是必须的,所以有些⽂件没有⽂件头
4.2 使⽤指定编码⽅式读取⽂件
with open("","r",encoding="gbk") as f:
f = f.readlines()
4.3 ⼿动遍历常⽤编码⽅式
如果4.1⽅式⽆法获取⽂件编码⽅式,⼿动指定,⼀个个尝试,直到正确解析⽂件为⽌。
五、其他解决⽅式
5.1 读取⽂件忽略报错
with open("","r",encoding="gbk",errors="ignore") as f:
f = f.readlines()
5.2 使⽤⼆进制⽅式读取⽂件
with open("BIT_log_191230_164145.log",mode="rb") as f:
f = f.readlines()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。