configparser模块适用于配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值)。

这个ini文件就长这样,比如mysql的配置文件my.ini

[client]
default-character-set=utf8

[mysql]
user=root
password=123

[mysqld]
# skip-grant-tables

character-set-server=utf8
# sql-mode=""

什么是section和option

我们称呼client mysql mysqld这些字段为section,称呼其包含的键值对为option,如user=root等。

创建ini文件

先来看,我们如何创建如跟上面一样的文件:

from configparser import ConfigParser

obj = ConfigParser()

'''
[client]
default-character-set=utf8

[mysql]
user=root
password=123
'''

obj['DEFAULT'] = {'default-character-set': 'utf8'}
obj['client'] = {'default-character-set': 'utf8'}
obj['mysql'] = {'user': 'root', 'password': 123}

with open('./my.ini', 'w') as f:
    obj.write(f)

这样,在你脚本的同级目录就生成了一个my.ini文件。

其实,obj就相当于一个字典对象,我们只是在创建一个大的字典而已,那么对于该文件的操作,也类似于字典的操作。

操作文件

特殊的DEFAULT字段

有了文件,我们就可以操作它了。

from configparser import ConfigParser

obj = ConfigParser()
file_path = './my.ini'
# 注意,必须先 read,才能查看sections不然为空
print(obj.sections())  # []
obj.read(file_path)
# 以列表的形式返回ini文件的字段名
print(obj.sections())  # ['client', 'mysql']

由打印结果看到,之前创建的DEFAULT字段并没有返回,而其他的两个字段顺利返回了,这就是我要强调的,DEFAULT字段是一个特殊的默认字段,这里可以存储一些公共的键值对,我们不仅可以通过DEFAULT字段获取,也可以通过其他的任何字段获取,谁让它是公共的呢。

其他的两个字段就是普通的字段了,你能从别人卡里取钱?除非叫爸爸!

查操作

from configparser import ConfigParser

obj = ConfigParser()

file_path = './my.ini'

obj.read(file_path)
# print(obj.sections())  # ['client', 'mysql']
# 判断字段是否存在
print('client' in obj)  # True
print('client' not in obj)  # False

# 取值
print(obj['DEFAULT']['default-character-set'])  # utf8
print(obj['mysql'])  # <Section: mysql>
for key in obj['mysql']:
    print(key)

print(obj['mysql']['user'])  # root

# 返回 mysql 字段下所有的键值对
print(obj.items('mysql'))  # [('default-character-set', 'utf8'), ('user', 'root'), ('password', '123')]

# 同for循环,取 mysql 字段下所有的键
print(obj.options('mysql'))  # ['user', 'password', 'default-character-set']

# get方法取嵌套的值
print(obj.get('mysql', 'user'))  # root

增删改

from configparser import ConfigParser

obj = ConfigParser()

file_path = './my.ini'

obj.read(file_path)

# 创建一个字段
obj.add_section('wang')
obj.add_section('zhang')

# 删除一个字段
obj.remove_section('wang')

# 删除一个option

obj.remove_option('mysql', 'user')

# 为指定的字段 mysql 添加 option, 注意,指定字段必须存在
obj.set('mysql', 'user1', '234')

# 最后,别忘了,将最新修改的结果更新到文件中
obj.write(open(file_path, 'w'))

欢迎斧正,that's all see also: |

相关文章:

  • 2021-06-25
  • 2021-06-07
  • 2021-08-07
  • 2021-05-23
  • 2021-05-29
  • 2022-02-24
猜你喜欢
  • 2022-01-21
  • 2022-02-09
  • 2021-12-08
  • 2022-12-23
  • 2021-09-30
  • 2021-12-04
  • 2021-09-10
相关资源
相似解决方案