首页 > 编程语言 >python configparser操作配置文件

python configparser操作配置文件

时间:2024-08-22 10:15:10浏览次数:7  
标签:配置文件 python section db conf mysql config configparser

一、configparser概述

configparser 是 Pyhton 标准库中用来解析配置文件的模块;Python2.x 中名为 ConfigParser,3.x 已改名为configParser

二、配置文件的格式

常见的配置文件后缀:.ini.conf等,主要结构为包括以下的文本信息:

  1. sections(段)
  2. keys(properties\键)
  3. values(值)

格式如下:

[section]
key1=value1
key2=value2

配置文件示例 db_config.ini:

[oracle]
host = localhost
user = oracle_user
passwd = 123456
db = ora_db

[mysql]
host = localhost
user = root
passwd = 123456
db = testdb

[postgresql]
host = localhost
user = test
passwd = 123456
db = pgsql_db

三、读取文件内容

#coding=utf-8
import configparser


conf = configparser.ConfigParser()  # 初始化实例
conf.read('db_config.ini')   # 加载读取配置文件

# 获取所有 sections 名称
sections = conf.sections()  # list: ['oracle', 'mysql', 'postgresql']

# 获取指定 section 的 keys
option = conf.options("mysql")  # list: ['host', 'user', 'passwd', 'db']

# 获取 指定 section 指定 key 的 value 值
value = conf.get('logoninfo', 'addr') # str: testdb

# 获取指定 section 的 keys & values
item = conf.items('mysql')  # list: [('host', 'localhost'), ('user', 'root'), ('passwd', '123456'), ('db', 'testdb')]

print('mysql' in conf)  # 检查section是否存在
print("db" in conf["mysql"]) # 检查section中的key是否存在

四、写入配置文件

import configparser                     # 引入模块

conf = configparser.ConfigParser()    #实例化一个对象

conf['sqlserver'] = {
    'host': '127.0.0.1',
    'port': '1433',
    'user': 'root',
    'password': '123456',
    'db': 'my_db'
}

conf.set('mysql', 'port', '3306')  # 添加一个sectiond 的key=value配置项
conf.set('oracle', 'host', '192.168.1.5')  # 修改一个配置项
conf.remove_option("mysql", "db")  # 删除指定sectiond 的key=value配置项
config.remove_section("postgresql")  # 删除指定sectiond

with open('db_config.ini', 'w') as wf:
    conf.write(wf)

# 重命名section
def rename_section(config, old_section, new_section):
    items = config.items(old_section)
    print(items)
    if not config.has_section(new_section):
        config.add_section(new_section)
    # 将原始 section 的内容写入新的 section
    for key, value in items:
        config.set(new_section, key, value)

    config.remove_section(old_section)
    
    with open('db_config.ini', 'w') as wf:
        conf.write(wf)
    
# 调用重命名方法
rename_section(conf, old_section='mysql', new_section='sqlite')

标签:配置文件,python,section,db,conf,mysql,config,configparser
From: https://www.cnblogs.com/lanjianhua/p/18373240

相关文章

  • 提升代码迭代速度的Python重载方法使用详解
        概要在Python编程中,模块是组织代码的重要工具,它们使得代码更加模块化和易于维护。在开发和调试过程中,有时需要对已经导入的模块进行修改并重新加载以应用更改。Python提供了一个名为reload的模块,用于在不重新启动解释器的情况下重新加载已经导入的模块。本文将详......
  • Python代码部署之用Kubernetes实现自动化详解
    概要在现代软件开发中,容器化和微服务架构逐渐成为主流,而Kubernetes则是管理容器化应用的事实标准。Kubernetes(简称K8s)提供了自动化部署、扩展和管理容器化应用的强大功能。本文将详细介绍如何使用Kubernetes来部署Python代码,包括Kubernetes的基本概念、部署流程,以及通过示例......
  • Python是一种广泛使用的编程语言,其主要用途有什么?
    Python是一种广泛使用的编程语言,其主要用途包括但不限于以下几个方面:1.Web开发Python拥有众多Web开发框架,如Django和Flask,这些框架使得开发者能够高效地构建和维护Web应用程序。许多著名的网站,如YouTube、Instagram以及国内的豆瓣等,都是使用Python进行开发的。2.数据科学......
  • Python入门最完整的基础知识大全【纯干货,建议收藏】!
    主要内容如下:1.用Python做数据分析的重要性Python在数据分析和交互、探索性计算以及数据可视化等方面都显得比较活跃,这就是Python作为数据分析的原因之一,python拥有numpy、matplotlib、scikit-learn、pandas、ipython等工具在科学计算方面十分有优势,尤其是pandas,在处理中......
  • 零基础学习人工智能—Python—Pytorch学习(七)
    前言本文主要讲神经网络的下半部分。其实就是结合之前学习的全部内容,进行一次神经网络的训练。神经网络下面是使用MNIST数据集进行的手写数字识别的神经网络训练和使用。MNIST数据集,是一个常用的手写数字识别数据集。MNIST数据集包含60,000张28x28像素的灰度训练图像和......
  • str(int(value)).zfill(3) 是一个 Python 表达式,主要用于将数字转换为字符串并在字符
    str(int(value)).zfill(3)是一个Python表达式,主要用于将数字转换为字符串并在字符串前面补零,确保字符串的长度至少为3个字符。分解解释int(value):这个部分首先将value转换为整数。这假定value是一个可以被解释为整数的数值(如'42'或42.0)。如果value是一个浮点......
  • 六:《Python基础语法汇总》— 函数
    一:函数入门​函数:就是可以重复使用的具有一定功能的代码。除了一些Python内置的函数以外,函数也可以自己定义​自定义函数:通过def定义的函数自定义函数格式:def函数名(参数):函数要去实现的功能代码#调用函数函数名(参数)​命名函数名和参数名时要符合变......
  • Python——常用行为模式
    行为模式(BehavioralDesignPatterns)主要解决的是对象之间的职责划分与协作问题。这类模式通过定义对象间的通信方式、责任分配和行为组织,帮助构建可扩展、灵活的系统,并且通过减少耦合和提高复用性来优化系统行为。常见的行为模式有:责任链模式(ChainofResponsibility)命......
  • 【python】类的特殊成员
    上文介绍了Python的类成员以及成员修饰符,从而了解到类中有字段、方法和属性三大类成员,并且成员名前如果有两个下划线,则表示该成员是私有成员,私有成员只能由类内部调用。无论人或事物往往都有不按套路出牌的情况,Python的类成员也是如此,存在着一些具有特殊含义的成员,详情如下:__in......
  • 【自动化测试必学语言】python:UnitTest框架
    目录介绍框架什么是UnitTest框架?为什么使用UnitTest框架?UnitTest核心要素(unitest的组成部分)1.TestCase(最核心的模块) 2.TestSuite3.TestRunner4.TestLoader5.FixtureTestCase(测试用例)问题1 代码文件的命名不规范问题2代码运行没有结果 问题3没有找到用例......