python常用模块之configparser
作用:解析配置文件
假设在当前目录下有这样一个conf.ini文件
[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes
[bitbucket.org]
User = hg
[topsecret.server.com]
Port = 50022
ForwardX11 = no
模块的操作
import configparser
conf = configparser.ConfigParser() # 创建一个对象
# print(conf.sections()) # [],因为没有打开文件,所以是空的
conf.read("conf.ini") # 读取文件内容
print(conf.sections()) # ['bitbucket.org', 'topsecret.server.com']
# 那么为什么没有DEFAULT呢?因为在每一个配置文件中都会有一个DEFAULT,这是全局默认配置的东西,打印不出来的,但是可以获取到
print(conf.default_section) # DEFAULT
# 拿到里面的值
print(conf['bitbucket.org']['User']) # hg 此时是知道这个配置文件中的子模块bitbucket.org里有User
# 循环
for k,v in conf['bitbucket.org'].items():
print(k,v)
# user hg
# serveraliveinterval 45
# compression yes
# compressionlevel 9
# forwardx11 yes
那么,为啥会把DEFAULT里的打印出来呢?因为这是configparser设置的,会默认出现在每一个节点中
configparser其他的操作
# 还是以上面的conf.ini为例
import configparser
conf = configparser.ConfigParser() # 生成一个对象
conf.read("conf.ini",encoding='utf-8') # 读取配置文件内容
# 读
# print(dir(conf))
print(conf.options("bitbucket.org")) # 将bitbucket.org区域里的key全部拿出,包括DEFAULT里面的,['user', 'serveraliveinterval', 'compression', 'compressionlevel', 'forwardx11']
print(conf['bitbucket.org']['User']) # hg,拿到bitbucket.org里的User这个key的值
# 增加
conf.add_section("group1") # 增加name区域
conf['group1']['age'] = '22' # 增加group1区域中age这个key的值为22
conf['group1']['name'] = 'xiao'
conf.write(open("conf.ini","r+")) # 写进文件中
conf.write(open("i.cfg","w")) # 或者写到一个新文件中
# 删除
# conf.remove_section('group1') # 删除整个group1区域
# conf.write(open('i.cfg','w'))
conf.remove_option('group1','name') # 只删除group1区域里的name这个key
conf.write(open('conf.ini','w'))