美文网首页
ConfigParser读取配置文件在windows下读取记事本

ConfigParser读取配置文件在windows下读取记事本

作者: GREG蓝天 | 来源:发表于2018-07-18 11:18 被阅读0次

ConfigParser是Python自带的读取配置文件的一个库,在Linux下,没问题,但放到windows上并用记事本修改了配置文件后,再运行就报错了:

image.png

google了下原因:在window下面用记事本编辑文件的时候,如果保存为UNICODE或UTF-8,分别会在文件的开头加上两个字节“\xff\xfe”和三个字节“\xef\xbb\xbf”。

解决方法有两种:

1、用ConfigParser读取之前先全局替换,python2和python3都适用

content = open('Config.ini').read()
#Window下用记事本打开配置文件并修改保存后,编码为UNICODE或UTF-8的文件的文件头
#会被相应的加上\xff\xfe(\xff\xfe)或\xef\xbb\xbf,然后再传递给ConfigParser解析的时候会出错
#,因此解析之前,先替换掉
content = re.sub(r"\xfe\xff","", content)
content = re.sub(r"\xff\xfe","", content)
content = re.sub(r"\xef\xbb\xbf","", content)
open('Config.ini', 'w').write(content)

2、如果用的是Python3,那还有个更简单的方法,把encoding=utf-8 改为 encoding= utf-8-sig即可。由于python2的configparser的read方法没有encoding参数,所以无法使用这个方法。

import ConfigParser as cfps
cf = cfps.ConfigParser()
cf.read('Config.ini', encoding='utf-8-sig')

相关文章

网友评论

      本文标题:ConfigParser读取配置文件在windows下读取记事本

      本文链接:https://www.haomeiwen.com/subject/eehopftx.html