>PY提供INI設定檔的操作
關於設定檔,很直觀的感覺就是XML檔案。對於XML檔案的使用大家還是很喜歡的。但有時候只是簡單的一個程式,實現一個簡單的name:value關係。用XML檔案就沒這個必要。這種要求很符合MS的INI檔案格式。所以這裡主要介紹一下對INI檔案的操作方式,而且最近寫的第一個PY應用程式也是使用了INI
什麼是INI 檔案
PY所支援的INI檔案還是和Windows系統所定義有不同,它不但支援name=value的形式,還支援name:value的形式
>PY對INI設定檔讀取提供的類支援
PY的ConfigParser Module中定義了3個類對INI檔案進行操作。分別是RawConfigParser、ConfigParser、SafeConfigParser
RawCnfigParser是最基礎的INI檔案讀取類
ConfigParser、SafeConfigParser支援對$(value)s變數的支援。
>RawConfigParser類的使用方法
int檔案
[weburl]
urlname=http://pumaboyd.cnblogs.com
Test.py檔案
import ConfigParser, os
from __future__ import with_statement
cfg = ConfigParser.RawConfigParser()
with open("app.ini") as fobj
cfg.readfp( fobj)
print cfg.get("weburl","urlname")
>ConfigParser類的使用方法
Configration類是從RawConfigParser擴充過來的,可以支援$()s變數。
對RawConfigParserd的get(),items()進行了擴充
int檔案
[DEFAULT]
val=pumaboyd
[weburl]
name=%(val)s
Test.py檔案
import ConfigParser, os
from __future__ import with_statement
cfg = ConfigParser.ConfigParser()
with open("app.ini") as fobj
cfg.readfp( fobj)
print cfg.defaults()
print cfg.get("weburl","name")
可以看到cfg.get("weburl","name") 輸入的pumaboyd。如果這裡採用的是RawConfigParser,你將看到輸出的是%(val)s。
這裡需要注意的一個地方就是DEFAULT這個預設節點。只能通過cfg.defaults()讀取到。cfg.sections()是不包含DEFAULT這個節點的。
>SafeConfigParser類的使用方法
是從ConfigParser繼承過來,其實是對RawConfigParser進行了擴充,可以支援$()s變數
int檔案
[DEFAULT]
val=pumaboyd
[weburl]
name=abcd
Test.py檔案
import ConfigParser, os
from __future__ import with_statement
cfg = ConfigParser.SaftConfigParser()
with open("app.ini") as fobj
cfg.readfp( fobj)
cfg.set("weburl","name","&(val)s")
print cfg.get("weburl","name")
你將看到輸入結果是pumaboyd。如果採用的RawConfigParser,你就看到輸出的是%()s
>如何修改INI檔案
RawConfigParser、SafeConfigParser、ConfigParser中的SET、Remove等方法都只是對ConfigParser對象的修改,並沒有真正的儲存到INI檔案中。所以,需要通過Write方法(3個類中都有這個方法),將修改寫回INI檔案中。
ini檔案
[weburl]
name=abcd
Test.py檔案
import ConfigParser, os
from __future__ import with_statement
cfg = ConfigParser.ConfigParser()
with open("app.ini") as fobj
cfg.readfp( fobj)
cfg.set("weburl","name","pumaboyd")
with open("app.ini","w") as fwobj
cfg.write(fwobj)