2016-09-17 9 views
0

のConfigParserのインスタンスには属性iの設定ファイルを初期化しようとしている「__setitem__」

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__' 

を投げ続けます

答えて

-1
config.Testing = {"name": "Yohannes", "age": 10} 
+0

これは設定に何も追加しません – teivaz

0

あなたは単にそれを正しく使用していません。 Here例があります。あなたがhereを読むことができます取得しているエラーについて

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

self[key]への割り当てを実現するために呼び出され

object.__setitem__(self, key, value)

2

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'} 

注:あなたはそれを文字列以外の値(例えばconfig.set('Testing', 'age', 10))を得た場合にはPython 2のConfigParser.set()は文句ないだろう、それを取得しようとするとTypeErrorがスローされます。 set()メソッドを文字列以外の値で使用すると、Python 3はTypeErrorをスローしますが、値を__setitem__のアクセス権を持つ文字列に静かに変換します。例:

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