原來也有寫過一篇文章Python模塊之: ConfigParser 用來解析INI文件,但是在使用過程中存在一些問題。比如:
1,不能區分大小寫。
2,重新寫入的ini文件不能保留原有INI文件的注釋。
3,重新寫入的ini文件不能保持原有的順序。
4,不支持嵌套。
5,不支持格式校驗。
我本來是想擴展ConfigParser來支持上面的一些缺點的,但是我覺得應該有人有類似的問題並應該有相關的模塊滿足
我上面的需求的,於是放G搜索之。得到一個Lib: configobj。下面我將舉例說明其常用的幾個方法:
項目地址:http://www.voidspace.org.uk/python/configobj.html
在介紹之前,還是先各處初始化的test.ini文件:
1
2
3
4
5
6
7
8
|
[server]
servername = 192.168.11.1
serverport = 8000
[client_srv]
# 這里是注釋
server = localhost
port = 8000
|
A: 解析文件:
1
2
3
4
5
6
7
8
9
|
from
configobj
import
ConfigObj
#
conf_ini
=
"./test.ini"
config
=
ConfigObj(conf_ini,encoding
=
'UTF8'
)
#
# 讀配置文件
#
print
config[
'server'
]
print
config[
'server'
][
'servername'
]
|
B: 修改配置文件
1
2
3
4
5
6
|
from
configobj
import
ConfigObj
#
conf_ini
=
"./test.ini"
config
=
ConfigObj(conf_ini,encoding
=
'UTF8'
)
config[
'server'
][
'servername'
]
=
"127.0.0.1"
config.write()
|
C:添加新項:
1
2
3
4
5
6
7
|
from
configobj
import
ConfigObj
#
conf_ini
=
"./test.ini"
config
=
ConfigObj(conf_ini,encoding
=
'UTF8'
)
config[
'new_items'
]
=
{}
config[
'new_items'
][
'Items1'
]
=
"test items"
config.write()
|
D: 刪除項:
1
2
3
4
5
6
|
from
configobj
import
ConfigObj
#
conf_ini
=
"./test.ini"
config
=
ConfigObj(conf_ini,encoding
=
'UTF8'
)
del
config[
'client_srv'
][
'port'
]
config.write()
|
E: 將配置文件寫入到不同的文件:
1
2
3
4
5
6
7
|
from
configobj
import
ConfigObj
#
conf_ini
=
"./test.ini"
config
=
ConfigObj(conf_ini,encoding
=
'UTF8'
)
del
config[
'client_srv'
][
'port'
]
config.filename
=
"./test1.ini"
config.write()
|