ConfigParser实例没有属性'__setitem__'

时间:2016-09-17 07:52:06

标签: python python-2.7 file configuration

我正在尝试初始化配置文件

import ConfigParser

config = ConfigParser.ConfigParser()
config['Testing'] = {"name": "Yohannes", "age": 10}
with open("test.ini", "w") as configFile: 
    config.write(configFile)

但它不断抛出此错误

Traceback (most recent call last):
  File "C:\Users\user\workspace\ObjectDetection\src\confWriter.py", line 9, in <module>
    config['Testing'] = {"name": "Yohannes", "age": 10}
AttributeError: ConfigParser instance has no attribute '__setitem__'

我到处搜索但没找到任何东西

3 个答案:

答案 0 :(得分:3)

teivaz的答案是正确的,但可能不完整。你在使用ConfigParser对象的方式在Python 3(docs)中几乎是正确的,但不是Python 2(docs)。

这是Python 2:

import ConfigParser
config = ConfigParser.ConfigParser()
config.add_section('Testing')
config.set('Testing', 'name', 'Yohannes')
config.set('Testing', 'age', '10')  # note: string value for '10'!

Python 3:

import configparser  # note: lowercase module name
config = configparser.ConfigParser()
config['Testing'] = {'name': 'Yohannes', 'age': '10'}

注意:如果你给它一个非字符串值(例如ConfigParser.set()),Python 2&#39; config.set('Testing', 'age', 10)不会抱怨,但它会抛出一个TypeError当你试图检索它。当您使用带有非字符串值的TypeError方法时,Python 3将抛出set(),但它会静默地将值转换为具有__setitem__访问权限的字符串。 E.g:

config['Testing'] = {'name': 'Yohannes', 'age': 10}  # int value for 'age'
config['Testing']['age']  # returns '10' as a string, not an int

答案 1 :(得分:0)

你根本就没有正确使用它。 Here你可以找到例子。

config = ConfigParser.ConfigParser()
config.add_section('Testing')
config.set('Testing', 'name', 'Yohannes')
config.set('Testing', 'age', 10)

关于您收到的错误,您可以阅读here

  

object.__setitem__(self, key, value)   被要求实施self[key]的作业。

答案 2 :(得分:-1)

config.Testing = {"name": "Yohannes", "age": 10}