python3 操作 ini 文件

  1. 封装工具类

有两个类库

  • configparser
  • configobj

项目中用哪个更适合?内置模块(ConfigParser)或独立项目(ConfigObj)创建设置文件?

个人认为 ConfigParser 有一个缺点比较致命:配置文件并没有上面的 section 的话,读取会报错。

因此我使用 ConfigObj

不过需要先安装,安装很容易: pip install configobj

封装工具类

准备一份配置文件 config.ini

enable_log=true
[access]
username = admin
password = admin
ip = 
host = 192.168.1.1
port = 3306

项目目录如下

  • demo.py
  • config.ini
from configobj import ConfigObj
class ReadConfig:

    # 不存在的话返回 None
    def read_sec_opt(self, filename, section, option):
        try:
            config = ConfigObj(filename, encoding="utf-8")
            return config[section][option]
        except:
            return None

    # 不存在的话返回 None
    def read_opt(self, filename, option):
        try:
            config = ConfigObj(filename, encoding="utf-8")
            value = config.get(option)
        except:
            return None
        return value

    # section 不存在的话自动创建
    # option 不存在的话自动创建
    def write_sec_opt(self, filename, section, option, value):
        config = ConfigObj(filename, encoding="utf-8")
        try:
            config[section][option] = value
        except:
            config[section] = {}
            config[section][option] = value
        config.write()
        return True

    # option 不存在的话自动创建
    def write_opt(self, filename, option, value):
        config = ConfigObj(filename, encoding="utf-8")
        try:
            config[option] = value
            config.write()
            return True
        except:
            return False

    # section 不存在的话自动创建
    # option 不存在的话自动创建
    def del_sec_opt(self, filename, section, option, value):
        config = ConfigObj(filename, encoding="utf-8")
        try:
            del config[section][option]
            config.write()
            return True
        except:
            return False

    # option 不存在的话无视
    def del_opt(self, filename, option, value):
        config = ConfigObj(filename, encoding="utf-8")
        try:
            del config[option]
            config.write()
            return True
        except:
            return False

注意:若是生成 requirements.txt,可能会遗漏,正确的应该是 2 项:

configobj==5.0.6
configparser==5.0.1

转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:python3 操作 ini 文件

字数:390

本文作者:夏来风

发布时间:2020-12-23, 22:27:01

原始链接:http://www.demo1024.com/blog/python-ini/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。