本文最后更新于:2021年1月25日 下午
信息
这是一个用来管理配置文件的库
一般用来管理.ini
配置文件(Windows
下的配置文件)
不太推荐用这个东西,问题较多,感觉还不如直接json
文档
官方文档:https://docs.python.org/3/library/configparser.html
概念
.ini
和.conf
配置文件,他们大概长这样:
| [db] db_host = 127.0.0.1 db_port = 69 db_user = root db_pass = root host_port = 69 is_ok = True [concurrent] thread = 10 processor = 20
|
Section
上面的[db]
,[concurrent]
之类的就是section
内容一般用[]
来包裹,表示一块相对独立的配置块
Options
上面的db_host = 127.0.0.1
,db_port = 69
之类的就是Options
这是配置的本体,以Key-Value
的形式保存着
使用入门
这个东西的用法很像dict
如果遇到什么想要进行的dict
本身又提供函数的操作,可以试试看能不能用
读取
初始化ConfigParser对象
| >>>import configparser >>>config = configparser.ConfigParser() >>>config.read("ini", encoding="utf-8")
|
查询
获取Section节点
| >>>print(config.sections()) ['db', 'concurrent'] >>>print(config['db']) ['db', 'concurrent']
|
从Section中获取Options
| >>>config.options("db") ['db_host', 'db_port', 'db_user', 'db_pass', 'host_port'] >>>list(config['db'].keys()) ['db_host', 'db_port', 'db_user', 'db_pass', 'host_port']
|
获取Option的值
获取指定Option的值
| >>>r = config.get("db", "db_host") "127.0.0.1" >>>r0 = config['db']['db_host'] "127.0.0.1" >>>r1 = config.getint("db", "db_port") 69 >>>r2 = config.getboolean("db", "is_ok" ) True >>>r3 = config.getfloat("db", "host_port" ) 69.0
|
获取所有Option的值
| >>>config.items("db") [('db_host', '127.0.0.1'), ('db_port', '69'), ('db_user', 'root'), ('db_pass', 'root'), ('host_port', '69')] >>>list(config['database-mongo'].items()) [('db_host', '127.0.0.1'), ('db_port', '69'), ('db_user', 'root'), ('db_pass', 'root'), ('host_port', '69')]
|
检测
检测是否有Section
| >>>config.has_section("db") True >>>'db' in config True
|
检测是否有Option
| >>>config.has_option("section", "option") False >>>"db_host" in config["db"] True
|
修改/创建
创建Section
| >>>config.add_section("new:section") >>>config['new:section'] = {}
>>>config['new:section'] = {'o1': '1', 'o2': '2'}
|
修改/创建Option
修改某个option
的值,如果不存在该option
则会被创建
| >>>config.set("db", "db_port", "69") >>>config['db']["db_port"] = '69'
|
删除
删除Section
| >>>config.pop('db') >>> >>>config['db'] = {} >>>config.remove_section("default")
|
删除Option
| >>>config.pop('db') >>> >>>config['db'] = {} >>>config.remove_section("default")
|
持久化
| with open('example.ini', 'w') as f: config.write(f)
|
问题
关键词无法使用
有一些词在文件里是无法使用的,只要一访问带有这个词的Option就会报错
比如说 asctime
解决办法:
- 使用
RawConfigParser
而不是ConfigParser
- 把关键词删除