Python武器库开发-常用模块之configparser模块(十六)

configparser模块(十六)

ConfigParser模块在python3中修改为configparser.这个模块定义了一个ConfigParser类,该模块的作用就是用来读取配置文件的,使用模块中的RawConfigParser()、ConfigParser()、 SafeConfigParser()这三个方法,创建一个对象使用对象的方法对指定的配置文件做增删改查的操作。一般做自动化测试的时候,会使用到这个模块,用来操作配置文件(ini文件)封装一些常量。比如数据库、邮件、用户名密码、项目常量等等

ini 文件是一种常用配置文件,ini 文件主要如下:

  • ini 文件格式,由节、键、值组成

文件格式:

[section]   # 节  
key = value   # key:键,value:值

现在我们来编写一个ini文件,代码如下:

[user]
name = qianfu
age = 19
id = 1234
date = 2023-11-03[courses]
name = python
age = 19

ini 文件需要通过 configparser 模块操作,configparser 是 Python 中自带模块,常用的方法操作如下表:

方法作用
config = configparser.ConfigParser()创建 ConfigParser 对象
config.read(filenames, encoding=None)读取配置文件
config.sections()获取所有的 section,除 default 节点外
config.default_section只能获取 default 节点的 section
config.options(section)获取指定 section 下所有的 key
config.get(section, option,…)获取指定 section 下指定 key 的值
config.set(section, option,…)设置section 下指定 key 的值
config.items(section,…)获取指定 section 下所有 key 与 value
config.has_section(section)检查指定的section并返回bool值
config.has_option(section, option)检查指定的section下的指定option并返回bool值
config.remove_option(section, option,…)删除指定 section 下指定 key 与 value
config.remove_section(section)删除指定的section

我们使用以下的语句,导入configparser模块:

import configparser

初始化对象并读取文件

import configparser
import os
# 创建对象实例化
config = configparser.ConfigParser()
dirPath = os.path.dirname(os.path.realpath(__file__))
inipath = os.path.join(dirPath,'test.ini')
# 读取配置文件,如果配置文件不存在则创建
print(config.read(inipath,encoding='utf-8'))

以上代码输出如下:

在这里插入图片描述

获取并打印所有节点的名称

import configparser# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
secs = config.sections()
print(secs)

以上代码输出如下:

在这里插入图片描述

获取指定节点的所有key

import configparser# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
option = config.options('user')
print(option)

以上代码输出如下:

在这里插入图片描述

获取指定节点的键值对

import configparser# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
item_list = config.items('user')
print(item_list)

以上代码输出如下:

在这里插入图片描述

获取指定节点的指定key的value

import configparser# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
val = config.get('user','age')
print('user的age值为:',val)

以上代码输出如下:

在这里插入图片描述

检查section或option是否存在,并且返回bool值

import configparser# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
has_sec = config.has_section('user')
print(has_sec)has_opt = config.has_option('user','name')
print(has_opt)

以上代码输出如下:

在这里插入图片描述

添加一个section和option并赋值

import configparser# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
#添加一个section
config.add_section("permission")
#添加一个options并赋值
config.set("permission","isMember","true")with open("test.ini","w",encoding="UTF-8") as file:config.write(file)

可以看到我们的test.ini文件成功被添加了添加一个section和option并赋值为true了:

在这里插入图片描述

删除一个option

import configparser# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
print('删除前的option:',config.items('user'))
config.remove_option('user','age')
print("删除后的option:",config.items('user'))with open("test.ini","w",encoding="UTF-8") as file:config.write(file)

以上代码输出如下:

在这里插入图片描述

在这里插入图片描述

删除一个section

import configparser# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
print('删除前的section: ',config.sections())
config.remove_section('user')
print('删除后的section: ',config.sections())with open("test.ini","w",encoding="UTF-8") as file:config.write(file)

以上代码输出如下:

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/179730.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Github 自动化部署到GitHub Pages

1.准备工作 新建仓库 新建项目 配置 vite.config.ts base: ./,部署应用包时的基本URL,例:vue-cli 5.x 配置 publicPath 推送到远程仓库 2.配置 GitHub Token 点击 Settings -> Actions -> General 找到 Workflow permissions,选中第…

BetterDisplay Pro v1.4.15(显示器管理管理软件)

BetterDisplay Pro是一款屏幕显示优化工具,可用于Windows和Mac操作系统。它可以帮助用户调整屏幕的亮度、对比度、色彩等参数,以获得更好的视觉体验。此外,BetterDisplay Pro还提供了一些额外的功能,如屏幕分割、窗口管理、快捷键…

vivo发布“蓝心千询”自然语言对话机器人

🦉 AI新闻 🚀 vivo发布“蓝心千询”自然语言对话机器人 摘要:vivo今日发布了“蓝心千询”自然语言对话机器人,基于蓝心大模型。蓝心千询可以进行知识信息的快速问答,文学创作、图片生成,甚至还能编写程序…

✔ ★【备战实习(面经+项目+算法)】 11.3学习

✔ ★【备战实习(面经项目算法)】 坚持完成每天必做如何找到好工作1. 科学的学习方法(专注!效率!记忆!心流!)2. 每天认真完成必做项,踏实学习技术 认真完成每天必做&…

[GitLab] 安装Git 指定版本

卸载旧版本 检查是否已经安装 git --version如果已经安装,先卸载 yum -y remove git安装新版本 在GitHub上选择需要下载的版本 Git版本 在/usr/local/目录下新建文件夹:git,并在/usr/local/git/文件夹内下载压缩包 wget https://github…

串口通信代码整合1

本文为博主 日月同辉,与我共生,csdn原创首发。希望看完后能对你有所帮助,不足之处请指正!一起交流学习,共同进步! > 发布人:日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

【Redis】String字符串类型-内部编码使用场景

文章目录 内部编码使用场景缓存功能计数功能共享会话手机验证码 内部编码 字符串类型的内部编码有3种: int:8个字节(64位)的⻓整型,存储整数embstr:压缩字符串,适用于表示较短的字符串raw&…

JavaScript:事件循环机制(EventLoop)

一、理解进程、线程 进程是操作系统中的基本概念之一,指的是一个正在运行中的程序,包括了程序的执行代码、数据、资源等。操作系统为每个进程分配一定的系统资源,例如内存空间、文件和设备等,以便进程能够正常运行。 线程是进程…

coalesce函数(SQL )

用途: 将控制替换成其他值;返回第一个非空值 表达式 COALESCE是一个函数, (expression_1, expression_2, …,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返…

【计算系统】5分钟了解超算,高性能计算,并行计算,分布式计算,网格计算,集群计算以及云计算的区别

5分钟了解超算,高性能计算,并行计算,分布式计算,网格计算,集群计算以及云计算的区别 1. 超算2. 高性能计算3. 并行计算4. 分布式计算5. 网格计算6. 集群计算7. 云计算小结相关资料 1. 超算 超级计算机(Sup…

11.1~11.2双端口RAM(报错复盘,一些理解(循环,阻塞非阻塞),三目运算符解决使能端)

双端口RAM 分别用于读写数据,同时进行 当读使能端有效时可以读出来数据 当写使能端有效时可以覆写数据 读写并行操作 报错 1.reg必须在always里 这个不能assign,因为reg型不能assign,单端口的那个可以assign是因为其定义为了wire型,就不…

快速入手maven

文章目录 Maven介绍Maven安装和配置基于IDEA的Maven工程创建梳理Maven工程GAVP属性Idea构建Maven JavaSE工程Idea构建Maven JavaEE工程1. 手动创建2. 插件方式创建 Maven工程项目结构说明Maven核心功能依赖和构建管理依赖传递和冲突依赖导入失败场景和解决方案扩展构建管理和插…

Spring Boot 面试题——自动装配

目录 Spring Boot 中的自动装配是指什么?解决了什么问题?Spring Boot 自动装配的流程有哪些?Spring Boot 中实现自动装配的原理是什么?Spring 中的 ConfigurationClassPostProcessor 类有什么作用?Spring Boot 自动装配…

识别flink的反压源头

背景 flink中最常见的问题就是反压,这种情况下我们要正确的识别导致反压的真正的源头,本文就简单看下如何正确识别反压的源头 反压的源头 首先我们必须意识到现实中轻微的反压是没有必要去优化的,因为这种情况下是由于偶尔的流量峰值,Task…

unity 从UI上拖出3D物体,(2D转3D)

效果展示: 2D转3D视频 UI结构 UI组件挂载 UI结构 这个脚本挂载到 3D物体身上 using DG.Tweening; using System.Collections; using System.Collections.Generic; using UnityEngine;public class DragGame : MonoBehaviour {[HideInInspector]public bool isDrag…

Redis之 redis.config配置文件

文章目录 前言一、基本配置1.单位2.包含3.网络配置4.通用5.快照6.安全7.限制8.仅追加模式 二、总体主要介绍总结 前言 行家一出手,就知有没有,让一起学习redis.config配置文件。 一、基本配置 Redis 的配置文件位于 Redis 安装目录下,文件名…

2023李宏毅机器学习HW05样例代码中文注释版

这里只是 2023 李宏毅机器学习 HW05 样例代码的中文注释版的分享,下面的内容绝大部分是样例代码,补充了小部分函数的功能解释,没有做函数功能上的修改,是 Simple baseline 版本。 notebook 代码下载: [EN] [ZH] 文章目录 作业描述…

软件测试/测试开发丨利用ChatGPT 生成自动化测试脚本

点此获取更多相关资料 简介 自动化测试脚本可以模拟用户与应用程序的交互,例如点击按钮、输入数据、导航到不同的页面等等,以验证应用程序的正确性、性能和稳定性。 自动化测试在回归测试、冒烟测试等测试流程中都可以极大地起到节省时间、节省人力的作…

优先队列----数据结构

概念 不知道你玩过英雄联盟吗?英雄联盟里面的防御塔会攻击离自己最近的小兵,但是如果有炮车兵在塔内,防御塔会优先攻击炮车(因为炮车的威胁性更大),只有没有兵线在塔内时,防御塔才会攻击英雄。…

Charles小白新手入门教程

最近系统地重温了下Charles的各种功能,根据小破站上百里老师的讲解,做了一些笔记,对于Charles入门小白,多少会有点帮助, 下面就把分享给大家~ 一、Charles介绍 1、Charles简介 是基于http和https的代理服务器。 2、…