美文网首页python
python常用的配置文件之config.ini

python常用的配置文件之config.ini

作者: 小白兔胡萝卜 | 来源:发表于2021-10-26 17:46 被阅读0次

    背景

    在开发过程中,我们常常会用到一些固定参数或者是常量,对于这些较为固定且常用到的部分,往往会将其写到一个固定文件中,避免在不同的模块代码中重复出现从而保持核心代码整洁,此类固定文件通常被称为配置文件。python中有各种类型配置文件,如ini、yaml、toml、json、xml、py、txt、text、conf、cfg、properties等等,一般根据不同的系统平台和应用需求,选择适合的配置文件类型,最常见的大概有py、ini、yaml、toml、json,xml。

    问题:python中用py文件也可做配置文件,为何要用其他格式文件作为配置文件呢?

    回答:只是读取不变或者不需要修改的变量信息,一般使用py文件直接导入读取即可,简单方便,无需解释器解析配置,并可通过import模块,可在需要的地方随时随地读取和使用。但如果需要系统自动修改配置信息的时候,由于没有解释器的支持,我们不能定位其到原来配置文件中的位置,也无法结构化式的快速准确地修改配置,只能重新生成整个配置文件,进而带来注释丢失、变量顺序混乱痛点,这时采用其他格式文件类型(特别是带解释器模块)作配置文件就可以很好的解决该问题。

    ini类型文件简介

    ini最常见一种配置文件类型,其使用python自带的configparser模块实现配置文件的写入、更新、删除、读取等操作。如有使用依赖请安装: pip install configparser

    ini结构:

    片段(section)

    选项(option)(相当于python字典里的key)

    值(value)

    中文乱码问题解决:

    conf.read(path,encoding="utf-8")

    ini类型文件操作

    声明

        import configparser

    实例化

        cf = configparser.ConfigParser()

    读取

        cf.read(filename)    # 读取文件,返回filename的list

        cf.sections()    # 获取配置文件中所有sections的list

        cf.options(section)    # 获取指定section的键值list

        cf.items(section)    # 获取指定section下所有的键值对list

        cf.get(section, key)    # 获取指定section下指定key的value值, 返回str

        cf.getint(section, key)    # 获取指定sections下指定key的value值, 返回int

        cf.getfloat(section, key)    # 获取指定sections下指定key的value值, 返回float

        cf.getboolean(section, key)    # 获取指定sections下指定key的value值, 返回boolean

        cf.has_section(section)    # 获取是否包含某个section,返回boolean

        cf.has_option(section,key)    # 获取是否包含某个section的某个键,返回boolean

        其他不常用拓展接口:

        cf.optionxform(optionstr)    # option大小写不敏感,实例化时内部通过该接口将option转换成小写

        cf.read_dict(dictionary)    # 从字典中的加载配置

        cf.read_file(fd) # 从文件中加载配置

        cf.read_string(str) # 从字符串中的加载配置

    写入

        先构造(注意判断是否已存在该section,不然写入时会报错):

        list=cf.sections()

        if section not in list:

            cf.add_section(section)    # 添加sections值

        cf.set(section, option, value)    # 在指定的sections中添加键值对

        再真正写入:

        f =open('config.ini', "w") # 注意路径

        cf.write(f)

        f.close()

    删除

        先构造:

        cf.remove_section(section)    # 移除sections, 返回boolean

        cf.remove_option(section, option)    # 移除指定sections下的options,

        再真正写入:

        f =open('config.ini', "w") # 注意路径

        cf.write(f)

        f.close()

    configparser库参考:

    https://docs.python.org/3.9/library/configparser.html

    相关文章

      网友评论

        本文标题:python常用的配置文件之config.ini

        本文链接:https://www.haomeiwen.com/subject/nqbealtx.html