前往: 導覽, 搜尋

Python read ini file方法二 with ConfigParser

IniExample02.jpg

之前介紹 configobj 他有個缺點就是需要另外安裝,現在使用內建的 ConfigParser,使用上來方便許多,
但是用法完全不一樣。
INI 檔案格式如下:存成 Config.ini

[Section_A]
Key_ABC = Value_ABC
Key_DEF = Value_DEF
 
[Section_B]
Alarm = Some thing here
import ConfigParser
 
config = ConfigParser.ConfigParser()
config.read('Config.ini')
section_a_Value = config.get('Section_A', 'Key_ABC')#GET "Value_ABC"
section_b_Value = config.get('Section_B', 'Alarm') #Get "Some thing here"
print "section_a_Value = ", section_a_Value 
print "section_b_Value = ", section_b_Value 
"""
執行結果:
C:\temp_org>python readINI.py
section_a_Value =  Value_ABC
section_b_Value =  Some thing here
"""


上面的範例可以指定key 和 value 一個一個的讀出來,下面要介紹的是將整個 Section 都讀出來,放到 list 中

import ConfigParser
config = ConfigParser.RawConfigParser()
config.read('Config.ini')
single_section = config.items("Section_A")
for item in single_section:
    print "key = %s, valule = %s" % (item[0], item[1])
"""
執行結果:
C:\temp_org>python readINI.py
key = key_def, valule = Value_DEF
key = key_abc, valule = Value_ABC
"""


下面範例~~將整個 INI 檔案中的 Section 和裡面的 Key Value 全部印出來。

# -*- coding: utf-8 -*-
import ConfigParser
 
config = ConfigParser.ConfigParser()
config.optionxform = str
config.read('Config.ini')
 
total_section = config.sections()
for sSection in total_section:
    print "Section = ", sSection
    for item in config.items(sSection):
        print "key = %s, valule = %s" % (item[0], item[1])
"""
執行結果:
F:\Work\temp>python iniWriter.py
Section =  Section_A
key = Key_DEF, valule = Value_DEF
key = Key_ABC, valule = GoGoGO
Section =  Section_B
key = Alarm, valule = Some thing here
"""


那如果要 Write/modify 怎麼辦?

# -*- coding: utf-8 -*-
import ConfigParser
config = ConfigParser.ConfigParser()
config.read('Config.ini')
 
config.set("Section_A", "Key_ABC", "GOGOGO")#要修改Key 的 Value
config.write(open('Config.ini', 'wb'))

結果就會變成:

[Section_A]
key_def = Value_DEF
key_abc = GOGOGO
 
[Section_B]
alarm = Some thing here


但是~~妖瘦勒,把你爸的 Key 全部都改成小寫了,要解決這問題~~,請加設定檔

# -*- coding: utf-8 -*-
import ConfigParser
config = ConfigParser.ConfigParser()
config.optionxform = str  #reference: http://docs.python.org/library/configparser.html
config.read('Config.ini')
 
config.set("Section_A", "Key_ABC", "GOGOGO")#要修改Key 的 Value
config.write(open('Config.ini', 'wb'))