Python配置文件模块configparser

Python中的configparser模块用来处理特定格式的文件,其本质上是利用open来操作文件。

Python Version: 3.5+

configparser指定的格式

1
2
3
4
5
6
7
8
9
# 注释1
; 注释2

[section1] # 节点
k1 = v1 # 值
k2:v2 # 值

[section2] # 节点
k1 = v1 # 值

获取所有节点信息

实例配置文件

1
2
3
4
5
[mysql]
version=5.7

[python]
version:3.5

代码

1
2
3
4
5
6
7
8
9
import configparser

config = configparser.ConfigParser()
config.read('test.conf', encoding='utf-8')
ret = config.sections()
print(ret)

------------
['mysql', 'python']

获取指定节点下的所有键值对

1
2
3
4
5
6
7
8
9
import configparser

config = configparser.ConfigParser()
config.read('test.conf', encoding='utf-8')
ret = config.items('mysql')
print(ret)

------------
[('version', '5.7')]

获取指定节点下的所有键

1
2
3
4
5
6
7
8
9
import configparser

config = configparser.ConfigParser()
config.read('test.conf', encoding='utf-8')
ret = config.options('mysql')
print(ret)

------------
['version']

获取指定节点下的所有值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import configparser

config = configparser.ConfigParser()
config.read('test.conf', encoding='utf-8')
# ret = config.get('mysql', 'version')
# print(ret, type(ret))
# ret = config.getint('mysql', 'version')
# print(ret, type(ret))
ret = config.getfloat('mysql', 'version')
print(ret, type(ret))
# ret = config.getboolean('mysql', 'version')
# print(ret, type(ret))

------------
5.7 <class 'float'>

节点的增删查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import configparser

config = configparser.ConfigParser()
config.read('test.conf', encoding='utf-8')

# 检查配置文件中有没有指定的节点
has_sec = config.has_section('mysql')
print(has_sec)

# 在配置文件中添加新的节点
config.add_section('java')
config.write(open('test.conf', 'w'))

# 在配置文件中删除已有的节点
config.remove_section('python')
config.write(open('test.conf', 'w'))

------------
True
1
2
3
4
5
> cat test.conf
[mysql]
version = 5.7

[java]

节点内键值对的删改查

1
2
3
4
5
6
> cat test.conf
[mysql]
version = 5.7
path = /usr/local/mysql

[java]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import configparser

config = configparser.ConfigParser()
config.read('test.conf', encoding='utf-8')

# 检查配置文件中有没有指定的节点
has_opt = config.has_option('mysql', 'version')
print(has_opt)

# 在配置文件中修改节点
config.set('mysql', 'path', '/usr/local/src/mysql')
config.write(open('test.conf', 'w'))

# 删除节点下指定的键值对
config.remove_option('mysql', 'version')
config.write(open('test.conf', 'w'))

------------
True
1
2
3
4
5
> cat test.conf
[mysql]
path = /usr/local/src/mysql

[java]

configparser模块中,对节点没有修改的操作对节点下的键值对没有增加的操作