Python 解析配置模块之ConfigParser详解

比眉伴天荒 2022-07-13 15:16 287阅读 0赞

1.基本的读取配置文件

-read(filename) 直接读取ini文件内容

-sections() 得到所有的section,并以列表的形式返回

-options(section) 得到该section的所有option

-items(section) 得到该section的所有键值对

-get(section,option) 得到section中option的值,返回为string类型

-getint(section,option) 得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。

2.基本的写入配置文件

-add_section(section) 添加一个新的section

-set( section, option, value) 对section中的option进行设置,需要调用write将内容写入配置文件。

3.基本例子

test.conf










1


2


3


4


5


6


7


8


9



[sec_a] 


a_key1 = 20 


a_key2 = 10 


   


[sec_b] 


b_key1 = 121 


b_key2 = b_value2 


b_key3 = $r 


b_key4 = 127.0.0.1

parse_test_conf.py










1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


21


22


23


24


25


26


27


28


29


30


31


32



import 
ConfigParser 


cf 
= 
ConfigParser.ConfigParser() 


#read config 


cf.read(
“test.conf”



# return all section 


secs 
= 
cf.sections() 


print 
‘sections:’
, secs 


   


opts 
= 
cf.options(
“sec_a”



print 
‘options:’
, opts 


   


kvs 
= 
cf.items(
“sec_a”



print 
‘sec_a:’
, kvs 


   


#read by type 


str_val 
= 
cf.get(
“sec_a”

“a_key1”



int_val 
= 
cf.getint(
“sec_a”

“a_key2”



   


print 
“value for sec_a’s a_key1:”
, str_val 


print 
“value for sec_a’s a_key2:”
, int_val 


   


#write config 


#update value 


cf.
set
(
“sec_b”

“b_key3”

“new-$r”



#set a new value 


cf.
set
(
“sec_b”

“b_newkey”

“new-value”



#create a new section 


cf.add_section(
‘a_new_section’



cf.
set
(
‘a_new_section’

‘new_key’

‘new_value’



   


#write back to configure file 


cf.write(
open
(
“test.conf”

“w”
))

得到终端输出:










1


2


3


4


5



sections: [
‘sec_b’

‘sec_a’



options: [
‘a_key1’

‘a_key2’



sec_a: [(
‘a_key1’

“i’m value”
), (‘a_key2
‘, ’
22’)] 


value 
for 
sec_a
‘s a_key1: i’
m value 


value 
for 
sec_a’s a_key2: 22

更新后的test.conf










1


2


3


4


5


6


7


8


9


10


11


12


13



[sec_b] 


b_newkey = new-value 


b_key4 = 127.0.0.1 


b_key1 = 121 


b_key2 = b_value2 


b_key3 = new-$r 


   


[sec_a] 


a_key1 = i’m value 


a_key2 = 22 


   


[a_new_section] 


new_key = new_value

4.Python的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。RawCnfigParser是最基础的INI文件读取类,ConfigParser、SafeConfigParser支持对%(value)s变量的解析。

设定配置文件test2.conf










1


2


3


4



[portal] 


url = http:
//
%(host)s:%(port)s
/Portal 


host = localhost 


port = 8080

使用RawConfigParser:










1


2


3


4


5


6


7


8


9


10


11



import 
ConfigParser 


  


cf 
= 
ConfigParser.RawConfigParser() 


  


print 
“use RawConfigParser() read” 


cf.read(
“test2.conf”



print 
cf.get(
“portal”

“url”



  


print 
“use RawConfigParser() write” 


cf.
set
(
“portal”

“url2”

“%(host)s:%(port)s”



print 
cf.get(
“portal”

“url2”
)

得到终端输出:










1


2


3


4



use RawConfigParser() 
read 


http:
//
%(host)s:%(port)s
/Portal 


use RawConfigParser() write 


%(host)s:%(port)s

改用ConfigParser:










1


2


3


4


5


6


7


8


9


10


11



import 
ConfigParser 


  


cf 
= 
ConfigParser.ConfigParser() 


  


print 
“use ConfigParser() read” 


cf.read(
“test2.conf”



print 
cf.get(
“portal”

“url”



  


print 
“use ConfigParser() write” 


cf.
set
(
“portal”

“url2”

“%(host)s:%(port)s”



print 
cf.get(
“portal”

“url2”
)

得到终端输出:










1


2


3


4



use ConfigParser() 
read 


http:
//localhost
:8080
/Portal 


use ConfigParser() write 


localhost:8080

改用SafeConfigParser:










1


2


3


4


5


6


7


8


9


10


11



import 
ConfigParser 


  


cf 
= 
ConfigParser.SafeConfigParser() 


  


print 
“use SafeConfigParser() read” 


cf.read(
“test2.conf”



print 
cf.get(
“portal”

“url”



  


print 
“use SateConfigParser() write” 


cf.
set
(
“portal”

“url2”

“%(host)s:%(port)s”



print 
cf.get(
“portal”

“url2”
)

得到终端输出(效果同ConfigParser):










1


2


3


4



use SafeConfigParser() 
read 


http:
//localhost
:8080
/Portal 


use SateConfigParser() write 


localhost:8080

发表评论

表情:
评论列表 (有 0 条评论,287人围观)

还没有评论,来说两句吧...

相关阅读