环境:
python3.6
需求:
针对于打开一个文件,可以读取到文本的编码方式,根据默认的文件编码方式来获取文件,就不会出现乱码。
针对这种需求,python中有这个方式可以很好的解决:
解决策略:
chardet是一个非常优秀的编码识别模块。
chardet 是python的第三方库,需要下载和安装。
下载地址:
官方推荐下载地址:https://pypi.org/project/chardet/
安装事项:
如果采用源代码安装方法,有可能会提示缺少setuptools这个模块。
因此这里我们采用另外一种更为方便的安装方法,不论你选择哪种安装包,将它解压得到其中的文件夹【chardet】将这个文件夹复制到【python安装根目录Libsite-packages】下,确保这个位置可以被python引用到。
如果不能被引用到请加入环境变量。【这在windows和linux下都是适用的】
开始本文:
因使用pycharm做python的开发工作,所以使用pycharm下载安装是个更高效的选择!!
1.使用pycharm安装chardet第三方库。
左上角File->Default Settings->进入Project Interpreter【工程翻译???什么鬼,Project Depend比较贴切吧】
![](https://img2018.cnblogs.com/blog/978388/201901/978388-20190125102322031-22202142.png)
2.查找chardet
注意是chardet不是charset
安装成功
3.开始使用chardet查看文件文本内容的编码方式
代码:【注意,open需要指定打开模式为'b'二进制打开,并且需要'rb'或'wb'或其他组合方式,仅使用'b'模式不够】
import chardet fileName = 'E:/2/采集数据_pswf12_180大0小35750_20181206.txt' currentFile = open(fileName,mode='rb') content = currentFile.read() print(chardet.detect(content))
查看结果:
编码方式为utf-8的概率为99%
使用chardet判断编码方式后,就可以放心采用本种编码方式去去读取文本内容而不怕报错或乱码
import chardet fileName = 'E:/2/采集数据_pswf12_180大0小35750_20181206.txt' # 按照二进制只读模式 打开文件 读取并解析文本内容的编码方式 currentFile = open(fileName,mode='rb') content = currentFile.read() print(chardet.detect(content)) # 按照编码方式为 UTF-8读取整个文本内容 currentFile = open(fileName,encoding='utf-8') content = currentFile.read() print(content) # 关闭文件 currentFile.close()
4.按行读取,更快
import chardet fileName = 'E:/2/采集数据_pswf12_180大0小35750_20181206.txt' # 按照二进制只读模式 打开文件 仅读取一行 并解析文本内容的编码方式 currentFile = open(fileName,mode='rb') content = currentFile.readline() print(chardet.detect(content)) # 按照编码方式为 UTF-8 按行读取 整个文本内容 currentFile = open(fileName,encoding='utf-8') line = currentFile.readline() while line: print(line) line = currentFile.readline() # 关闭文件 currentFile.close()