[Python] ConfigParser
常常跑個程式, 需要相當多不同的設定實在有夠麻煩, 就用個ini file來幫忙, python就有個ConfigParser可以處理
ConfigParser - Configuration file parser : http://docs.python.org/2/library/configparser.html
使用上相當簡單, 不過要是看官網, 會發現, 疑, 他有好多個ConfigParser, 在很久之前我用過基本的RawConfigParser, 後來新版本出來後, 基本都是使用SafeConfigParser, 依照官網說法, 為了compatible的問題, 當然還有增加一些額外的方法, 不過這我就沒有真的去測試了
舉例來說設定過ini的人應該了解ini file的格式
env.cfg
[Daemon]
IP = 192.168.1.5
PORT = 54321
[DTree]
LEAF = 1
INFOGAIN = 0.1
Ex:
可以看的出來, 用read讀入ini檔案. 每一個開頭都叫做section, 裡面的稱為property
然後用get取出property, get後面要先放section name, 再放要擷取的property name, 就會取出property value. 要注意的是, get預設出來是str type, 基本上它還有getint, getfloat, getboolean
上面是相當簡易的使用方式, 那我們來看使用更完整的資訊
如果今天config檔案很大, 很複雜, 你想要用ConfigParser顯示出更多的資訊, 可以這樣做
Ex:
所有的section可以呼叫sections(), 會傳出一個list涵蓋所有section name, 知道section之後, 還可以透過options()去呼叫出所有可能的property name
Output Result:
那如果, 我現在要修改ini設定值跟刪除某個設定, 並且寫回ini file, 可以這麼做
這邊實驗過的人會發現一個很討厭的事情, property居然都變成小寫了!! 其實只要在宣告ConfigParser之後多一行設定即可, 預設讀入ini的時候其實是全部小寫, 官網有特別說明
這樣, 就可以原模原樣的繼續使用了!!
ref: http://docs.python.org/2/library/configparser.html#ConfigParser.RawConfigParser.optionxform
wiki ini file format: http://en.wikipedia.org/wiki/INI_file
ConfigParser - Configuration file parser : http://docs.python.org/2/library/configparser.html
使用上相當簡單, 不過要是看官網, 會發現, 疑, 他有好多個ConfigParser, 在很久之前我用過基本的RawConfigParser, 後來新版本出來後, 基本都是使用SafeConfigParser, 依照官網說法, 為了compatible的問題, 當然還有增加一些額外的方法, 不過這我就沒有真的去測試了
舉例來說設定過ini的人應該了解ini file的格式
env.cfg
[Daemon]
IP = 192.168.1.5
PORT = 54321
[DTree]
LEAF = 1
INFOGAIN = 0.1
Ex:
import ConfigParser config = ConfigParser.SafeConfigParser() config.read("env.cfg") sip = config.get('Daemon', 'IP') sport = config.getint('Daemon', 'PORT')
可以看的出來, 用read讀入ini檔案. 每一個開頭都叫做section, 裡面的稱為property
然後用get取出property, get後面要先放section name, 再放要擷取的property name, 就會取出property value. 要注意的是, get預設出來是str type, 基本上它還有getint, getfloat, getboolean
上面是相當簡易的使用方式, 那我們來看使用更完整的資訊
如果今天config檔案很大, 很複雜, 你想要用ConfigParser顯示出更多的資訊, 可以這樣做
Ex:
import ConfigParser config = ConfigParser.SafeConfigParser() config.read(filepath) print 'Sections:' print config.sections() print 'Properties:' for name in config.sections(): print config.options(name)
所有的section可以呼叫sections(), 會傳出一個list涵蓋所有section name, 知道section之後, 還可以透過options()去呼叫出所有可能的property name
Output Result:
Sections: ['DTree', 'Daemon'] Properties: ['leaf', 'infogain'] ['port', 'ip']
那如果, 我現在要修改ini設定值跟刪除某個設定, 並且寫回ini file, 可以這麼做
config.set('Daemon', 'IP', '192.168.1.2') # 只有設定, 檔案並不會修改, config.remove_option('DTree', 'LEAF') #可以修改, 當然也可以刪除 config.write(open("env.cfg", "w")) # 這樣檔案才真的會修改
這邊實驗過的人會發現一個很討厭的事情, property居然都變成小寫了!! 其實只要在宣告ConfigParser之後多一行設定即可, 預設讀入ini的時候其實是全部小寫, 官網有特別說明
config = ConfigParser.SafeConfigParser() config.optionxform = str # 多加這行 config.read("env.cfg")
這樣, 就可以原模原樣的繼續使用了!!
ref: http://docs.python.org/2/library/configparser.html#ConfigParser.RawConfigParser.optionxform
wiki ini file format: http://en.wikipedia.org/wiki/INI_file
留言
張貼留言