Python config 配置 之 configparser 使用方法

1. 为什么写这篇文章

     我使用配置的以下几种方式:

           1.  类中的 __init__ 初始化方法中

           2.  单独新建一个py文件来存放config配置

           3.  使用const库来存放配置

       看到其他人用的配置文件方式用的是  configparser   ,我原则是看到好东西就想学,然后自己查了下资料,发现别人写的乱七八糟,然后就整理了一下,自己也测试好了,贴出来给大家借鉴一下,但更多的是给我自己看。

            configparser 个人使用体会: 不好用,写、读、改配置麻烦,用完之后发现还是const好用

 

2.  创建配置项

import configparser
config = configparser.ConfigParser()

def writeConf():
    """写入配置文件"""
    config['mysql'] = {
        'host': '127.0.0.1',
        'port': '3306',
        'user': 'root',
        'password': '123456'
    }
    config['hive'] = {
        'host': '192.168.0.1',
        'port': '27017',
        'user': 'root',
        'password': '123456'
    }
    with open('config.ini', 'a+', encoding='utf-8') as f:
        config.write(f)

def main():
    writeConf()

if __name__ == '__main__':
    main()

      运行完毕则会看到当前目录下会出现配置文件,内容如下

                        

 

3. 读取并使用配置项

import configparser
config = configparser.ConfigParser()


def activeConf():
    """操作config 配置文件中所有的配置都是字符串类型"""
    # 得到配置文件里面的数据
    config.read('config.ini', encoding='utf-8')
    # 查看config配置文件中的配置项(配置模块的名字)
    print(config.sections())  # ['mysql', 'hive']
    # 判断mysql是否在config配置中
    print('mysql' in config) # True
    print('hive' in config) # True
    print('hbase' in config) # False

    # 取值
    mysql_host = config['mysql']['host']
    print('mysql_host= ', mysql_host) # mysql_host=  127.0.0.1

    # 循环读值
    for key, values in config['hive'].items():
        print(key, values)
        '''
        host 192.168.0.1
        port 27017
        user root
        password 123456
        '''
    # 找到mysql下所有的键
    print(config.options('mysql'))  #['host', 'port', 'user', 'password']

    # 找到hive下所有的键
    print(config.options('hive'))  #['host', 'port', 'user', 'password']

    # 找到mysql下所有键值对
    print(config.items('mysql')) # [('host', '127.0.0.1'), ('port', '3306'), ('user', 'root'), ('password', '123456')]

    # 找到hive下所有键值对
    print(config.items('hive')) # [('host', '192.168.0.1'), ('port', '27017'), ('user', 'root'), ('password', '123456')]

    # 获取 mysql 下 的 host 的值
    print(config.get('mysql', 'host')) # 127.0.0.1
    # 另一种获取方式
    print(config['mysql'].getint('port')) # port =  3306

    # getint 将得到值转成 int 类型
    port = config.getint('mysql', 'port')
    print('port= ', port, type(port)) # port=  3306 <class 'int'>
    # 同上
    port = config.getfloat('mysql', 'port')
    print('port= ', port, type(port)) # port=  3306.0 <class 'float'>

    # 还有一个getboolean: config.getboolean()
    #getboolean方法可以识别 'yes'/'no', 'on'/'off', 'true'/'false' and '1'/'0'等数据并转换为布尔值



def main():
    activeConf()


if __name__ == '__main__':
    main()

 

4.   增加配置项

import configparser
config = configparser.ConfigParser()


def addConfig():
    # 可以在config.ini配置文件中手动添加配置
    # 添加了中文就需要设置编码格式

    # 手动添加的
    '''
    [tan]
    name = '小明'
    age = '男'
    sex = 23
    '''
    # config.read('config.ini', encoding='utf-8')
    config.read('config.ini')
    # 增加一个配置项
    config.add_section('yuan')
    # 给这个配置项赋值
    config.set('yuan', 'k2', '22222')
    f = open('config.ini', "w")
    config.write(f) # 写进文件
    f.close()
    '''
    [yuan]
    k2 = 22222
    '''

def main():
    addConfig()


if __name__ == '__main__':
    main()

 

5. 修改配置项

import configparser
config = configparser.ConfigParser()


def updateConfig():
    """修改配置"""
    config.read('config.ini')

    # 修改yuan下面的配置项
    config.set('yuan', 'k1', 'a1111')
    config.set('yuan', 'k2', 'b2222')
    config.set('yuan', 'k3', 'c3333')
    config.set('yuan', 'k4', 'd4444')
    '''
    [yuan]
    k2 = b2222
    k1 = a1111
    k3 = c3333
    k4 = d4444
    '''
    f = open('config.ini', "w")
    config.write(f)  # 写进文件
    f.close()


def main():
    updateConfig()


if __name__ == '__main__':
    main()

 

6. 删除配置项

import configparser
config = configparser.ConfigParser()


def removeConfig():
    """删除配置"""
    config.read('config.ini')
    # 删除掉 yuan 下的 k1 配置
    config.remove_option('yuan', 'k1')

    # 删除一个section, 将yuan整个配置都给删掉
    config.remove_section('yuan')

    f = open('config.ini', "w")
    config.write(f)  # 写进文件
    f.close()

def main():
    removeConfig()

if __name__ == '__main__':
    main()

 

7. 全部代码

import configparser
config = configparser.ConfigParser()

def writeConf():
    """写入配置文件"""
    config['mysql'] = {
        'host': '127.0.0.1',
        'port': '3306',
        'user': 'root',
        'password': '123456'
    }
    config['hive'] = {
        'host': '192.168.0.1',
        'port': '27017',
        'user': 'root',
        'password': '123456'
    }
    with open('config.ini', 'a+', encoding='utf-8') as f:
        config.write(f)

def activeConf():
    """操作config 配置文件中所有的配置都是字符串类型"""
    # 得到配置文件里面的数据
    config.read('config.ini', encoding='utf-8')
    # 查看config配置文件中的配置项(配置模块的名字)
    print(config.sections())  # ['mysql', 'hive']
    # 判断mysql是否在config配置中
    print('mysql' in config) # True
    print('hive' in config) # True
    print('hbase' in config) # False

    # 取值
    mysql_host = config['mysql']['host']
    print('mysql_host= ', mysql_host) # mysql_host=  127.0.0.1

    # 循环读值
    for key, values in config['hive'].items():
        print(key, values)
        '''
        host 192.168.0.1
        port 27017
        user root
        password 123456
        '''
    # 找到mysql下所有的键
    print(config.options('mysql'))  #['host', 'port', 'user', 'password']

    # 找到hive下所有的键
    print(config.options('hive'))  #['host', 'port', 'user', 'password']

    # 找到mysql下所有键值对
    print(config.items('mysql')) # [('host', '127.0.0.1'), ('port', '3306'), ('user', 'root'), ('password', '123456')]

    # 找到hive下所有键值对
    print(config.items('hive')) # [('host', '192.168.0.1'), ('port', '27017'), ('user', 'root'), ('password', '123456')]

    # 获取 mysql 下 的 host 的值
    print(config.get('mysql', 'host')) # 127.0.0.1
    # 另一种获取方式
    print(config['mysql'].getint('port')) # port =  3306

    # getint 将得到值转成 int 类型
    port = config.getint('mysql', 'port')
    print('port= ', port, type(port)) # port=  3306 <class 'int'>
    # 同上
    port = config.getfloat('mysql', 'port')
    print('port= ', port, type(port)) # port=  3306.0 <class 'float'>

    # 还有一个getboolean: config.getboolean()
    #getboolean方法可以识别 'yes'/'no', 'on'/'off', 'true'/'false' and '1'/'0'等数据并转换为布尔值

def addConfig():
    # 可以在config.ini配置文件中手动添加配置
    # 添加了中文就需要设置编码格式

    # 手动添加的
    '''
    [tan]
    name = '小明'
    age = '男'
    sex = 23
    '''
    # config.read('config.ini', encoding='utf-8')
    config.read('config.ini')
    # 增加一个配置项
    config.add_section('yuan')
    # 给这个配置项赋值
    config.set('yuan', 'k2', '22222')
    f = open('config.ini', "w")
    config.write(f) # 写进文件
    f.close()
    '''
    [yuan]
    k2 = 22222
    '''


def updateConfig():
    """修改配置"""
    config.read('config.ini')

    # 修改yuan下面的配置项
    config.set('yuan', 'k1', 'a1111')
    config.set('yuan', 'k2', 'b2222')
    config.set('yuan', 'k3', 'c3333')
    config.set('yuan', 'k4', 'd4444')
    '''
    [yuan]
    k2 = b2222
    k1 = a1111
    k3 = c3333
    k4 = d4444
    '''
    f = open('config.ini', "w")
    config.write(f)  # 写进文件
    f.close()

def removeConfig():
    """删除配置"""
    config.read('config.ini')
    # 删除掉 yuan 下的 k1 配置
    config.remove_option('yuan', 'k1')

    # 删除一个section, 将yuan整个配置都给删掉
    config.remove_section('yuan')

    f = open('config.ini', "w")
    config.write(f)  # 写进文件
    f.close()

def main():
    # writeConf()
    # activeConf()
    # addConfig()
    # updateConfig()
    removeConfig()

if __name__ == '__main__':
    main()

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
configparser模块是一个用于读取和写入配置文件的Python标准模块。配置文件通常是用于存储应用程序的设置和配置信息的文件。下面是使用configparser模块的基本步骤: 1. 导入configparser模块: ```python import configparser ``` 2. 创建一个ConfigParser对象: ```python config = configparser.ConfigParser() ``` 3. 读取配置文件: ```python config.read('config.ini') ``` 4. 获取配置项的值: ```python value = config.get('section', 'option') ``` 其中,section是配置文件中的一个段落,option是段落中的一个选项。例如,在以下配置文件中: ``` [database] host = localhost port = 3306 user = root password = test123 database = testdb ``` 要获取host的值,可以使用以下代码: ```python host = config.get('database', 'host') print(host) # 输出:localhost ``` 5. 修改配置项的值: ```python config.set('section', 'option', 'new_value') ``` 例如,要将host修改为127.0.0.1,可以使用以下代码: ```python config.set('database', 'host', '127.0.0.1') ``` 6. 写入配置文件: ```python with open('config.ini', 'w') as f: config.write(f) ``` 完整示例: ```python import configparser config = configparser.ConfigParser() # 读取配置文件 config.read('config.ini') # 获取配置项的值 host = config.get('database', 'host') port = config.getint('database', 'port') user = config.get('database', 'user') password = config.get('database', 'password') database = config.get('database', 'database') print('host:', host) print('port:', port) print('user:', user) print('password:', password) print('database:', database) # 修改配置项的值 config.set('database', 'host', '127.0.0.1') # 写入配置文件 with open('config.ini', 'w') as f: config.write(f) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值