configparser读取含有中文的配置(Windows) configparser.MissingSectionHeaderError: File contains no section headers. file: 'test.cfg', line: 1 '\ufeff[test]\n'------------转载

configparser读取含有中文的配置(Windows)

运行环境:Windows7.1

在 Python 3 中虽有encoding 参数,但是对于有BOM(如Windows下用记事本指定为utf-8)的文件,需要使用 utf-8-sig, 使用utf-8就没戏.

配置文件 (utf-8格式,带BOM)

  1.  
    [test]
  2.  
    a = 中文

Python3下面的代码:

  1.  
    # -*- coding:utf-8 -*-
  2.  
    import configparser
  3.  
    config = configparser.ConfigParser()
  4.  
    config.read('test.cfg.txt',encoding="utf-8-sig") #,encoding="utf-8"
  5.  
     
  6.  
    print ( config['test']['a'])

Python2 下面的代码:

  1.  
    # -*- coding:utf-8 -*-
  2.  
    import ConfigParser
  3.  
    import codecs
  4.  
    config = ConfigParser.ConfigParser()
  5.  
    with codecs.open('test.cfg.txt', encoding="utf-8-sig" ) as f:
  6.  
      config.readfp(f) 
  7.  
      print ( config.get("test", "a"))

使用utf-8的错误:

configparser.MissingSectionHeaderError: File contains no section headers.
file: 'test.cfg', line: 1
'\ufeff[test]\n'

这个问题在Linux下是没有的。

 

 

 

转载于:https://my.oschina.net/cppblog/blog/384099

posted @ 2020-08-18 10:40  乖乖楠  阅读(1191)  评论(0编辑  收藏  举报