2012-02-28 29 views
14

所以我寫了一個腳本,從配置文件讀取,我想用它configparser究竟是如何設計概述這裏使用:http://docs.python.org/release/3.2.1/library/configparser.html的Python configparser沒有不接受鍵的值

我使用Python 3.2.1。該腳本完成後,將使用相同版本的Python在Windows 2008 R2計算機上運行,​​或者假定兼容性爲當時的最新版本。

#!/user/bin/env python 
import configparser 

config = configparser.ConfigParser() 
config.read('c:\exclude.ini') 
config.sections() 

工作正常,閱讀exclude.ini文件 - 除非我有一個沒有鍵的值。想着也許我做錯了什麼嘗試解析的例子這裏列出:http://docs.python.org/release/3.2.1/library/configparser.html#supported-ini-file-structure

它仍然下面的每一次拋出:

File "C:\Python32\lib\configparser.py", line 1081, in _read 
    raise e 
configparser.ParsingError: Source contains parsing errors: c:\exclude.ini 
    [line 20]: 'key_without_value\n' 

我不知所措......我逐字複製/粘貼我正在使用的確切Python版本的文檔中的示例代碼,它不工作,因爲它應該。我只能假設我錯過了一些東西,因爲我也找不到有類似問題的人。

回答

12

ConfigParser constructor的關鍵字參數allow_no_value的默認值爲False

嘗試將其設置爲true,我敢打賭它會爲你工作。

+0

優秀,三江源卡爾。也許我應該給他們發一條提示,告訴他們改變他們的例子.ini以在該部分上面添加註釋,注意該部分僅在構造函數改變時才起作用。我想我應該閱讀整個文檔,但事情的發展方式在我看來,它應該像這樣默認工作。 – Sparc 2012-02-29 00:32:54

+0

這甚至工作,如果該部分看起來是這樣的: [軟件] 3700雜誌複製1.0.2 的Adobe Flash Player的ActiveX 11 ADOBE READER X(10.1.7) - 德語 DOTNET的框架4.0 [...] – enthus1ast 2014-02-10 15:35:41

0
class RawConfigParser: 
def __init__(self, defaults=None, dict_type=_default_dict, 
      allow_no_value=False): 
    self._dict = dict_type 
    self._sections = self._dict() 
    self._defaults = self._dict() 
    if allow_no_value: 
     self._optcre = self.OPTCRE_NV 
    else: 
     self._optcre = self.OPTCRE 
    if defaults: 
     for key, value in defaults.items(): 
      self._defaults[self.optionxform(key)] = value 

進口ConfigParser

CF = ConfigParser.ConfigParser(allow_no_value =真)