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

news2024/11/22 16:07:52

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.coloradmin.cn/o/1168387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux实现简易shell

文章目录 🦄0. shell🐮1. 交互及获取命令行🐷2. 解析命令行🐯3. 执行命令行🐅3.1 普通命令🐅3.2 内建命令 🦁4. 主函数逻辑及演示 本章代码gitee仓库:简易shell 🦄0. she…

Python自动化测试如何自动生成测试用例?

传统的测试用例需要测试或者开发人员将用户的操作用代码表示出来,通过断言判断是否和预期一致,写测试用例也占用了部分时间,加上版本迭代测试用例的维护成本也较高,于是基于无埋点的需求相结合自动化测试来检测埋点,及…

行情分析——加密货币市场大盘走势(11.3)

大饼昨日与今日目前都是下跌态势,近期依然要保持逢低做多的策略。现在下跌,可以继续等待,也可以入场一部分仓位的多单,回调才是给机会上车。MACD日线来看,会继续回调,因此这个位置还是可以在等等。 以太昨日…

实践笔记-docker-compose安装

docker-compose 1.在线安装2.离线安装 1.在线安装 # github下载(太慢了或者直接下载不了) curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose # daocloud下载 c…

【MySQL】015-MySQL索引

【MySQL】015-MySQL索引 文章目录 【MySQL】015-MySQL索引一、MySQL索引是什么1、概述2、好处3、缺点4、索引的使用场景5、常用命令查看数据表上建的索引 二、索引的分类1、三大类2、为什么使用B树作为索引在疑问为什么使用B树这种数据结构之前,先想想什么样的数据结…

网络编程——以太网协议

一,以太网格式 1.1目的地址 这个地址不是IP地址,而是网络中的另一套地址体系,mac 地址(物理地址),这个地址的作用与IP地址有一定的重合。因为网络层协议与应用层协议是各自独立被开发的,所以地…

黄仁勋:英伟达预言 2 年内行业将面目全非 一个词形容AI:Unbelievable

本心、输入输出、结果 文章目录 黄仁勋:英伟达预言 2 年内行业将面目全非 一个词形容AI:Unbelievable前言【访谈内容】一个词形容AI:Unbelievable创立英伟达“比想象中难一百万倍”相关图片传送门弘扬爱国精神 黄仁勋:英伟达预言 …

贷款行业极难获客,怎么获取实时客户数据?

我们能想象当客户有贷款需求时会发生什么吗? 客户可能会打开手机搜索“如何借款”、“哪笔贷款利息低”、“最多能借多少钱”、“贷款需要什么条件”等关键词,然后,客户点击进入第一个链接,然后填写他们的姓名和电话号码来测试他…

浅谈无源供电无线测温在线监测系统应用方案

安科瑞 崔丽洁 摘要:无源供电无线测温在线监测系统是一种基于声表面波技术的测温技术,在变电站监测方面得到了很好的技术实践应用。本文对无源供电无线测温在线监测系统研究应用进行分析研究。 关键词:设备检测;无线测温。 引言 在…

vcruntime140.dll无法继续执行代码修复教程

在计算机的世界里,我们经常会遇到各种各样的问题,其中之一就是“vcruntime140.dll缺失”。这个问题可能会影响到我们的正常使用,但是别担心,今天我就来给大家分享一下关于vcruntime140.dll缺失的4种修复方案。 首先,我…

C#完成XML文档节点的自动计算功能

一个项目涉及XML文档中节点的自动计算,就是XML文档的每个节点都参与运算,要求: ⑴如果节点有计算公式则按照计算公式进行; ⑵如果节点没有计算公式则该节点的值就是所有子节点的值之和; ⑶节点有4种类型,计…

内网穿透实现远程访问,如何满足信息安全需求?

内网穿透技术是一种将内网服务映射到外网,从而实现远程访问的技术。它的出现为企业及个人带来了便利,但同时也带来了一定的安全风险。因此,确保内网穿透远程访问内网服务的安全性显得尤为重要。 贝锐旗下内网穿透兼动态域名解析品牌花生壳&am…

【漏洞库】XXL-JOB executor 未授权访问漏洞导致RCE

文章目录 漏洞描述漏洞编号漏洞评级影响版本漏洞复现- EXP 编写 漏洞挖掘修复建议 漏洞描述 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。XXL-JOB分为adm…

TCP四次挥手过程解密:为什么不止三次挥手或更少次挥手?

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 专栏简介 📘 文章引言 一、三…

使用Postman工具做接口测试 —— 断言与参数提取

引言 下面我会以登录为例,来讲如何利用postman提取上一个接口返回数据,并且放到当前接口来使用。 接口关联(参数提取) 下面以登录接口为例,讲一下postman如何使用参数提取,可以通过Fiddler工具对系统登录操作进行抓包分析&#…

linux报错汇总

1. linux 安装pytorch报错 CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/current_repodata.json> Elapsed: -An HTTP error occurred when trying to retrieve this URL. HTTP errors are o…

基于 Amazon EC2 和 Amazon Systems Manager Session Manager 的堡垒机的设计和自动化实现

文章目录 1. 背景2. 云上堡垒机设计2.1 安全设计2.2 高可用和弹性设计2.3 监控告警设计2.4 自动化部署设计2.4.1 堡垒机代码设计2.4.2 Session Manager 配置设计2.4.3 堡垒机 IAM 角色设计 3. 部署堡垒机3.1 堡垒机部署架构图3.2 堡垒机自动化部署 4. 堡垒机使用场景4.1 堡垒机…

[python 刷题] 2866 Beautiful Towers II

[python 刷题] 2866 Beautiful Towers II 题目如下&#xff1a; You are given a 0-indexed array maxHeights of n integers. You are tasked with building n towers in the coordinate line. The ith tower is built at coordinate i and has a height of heights[i]. A co…

Wi-Fi还可以做什么?柯南解释IOT应用

大会报告&#xff1a;无线人工智能技术正在改变世界 Wi-Fi还可以做什么&#xff1f;随着带宽的提升&#xff0c;无线终端可以识别出更多的多径&#xff0c;每条多径都可以视作一个虚拟传感器&#xff0c;以感知周边环境。基于此&#xff0c;越来越多的无线感知产品应运而生。20…

Leetcode1122. 数组的相对排序

Every day a Leetcode 题目来源&#xff1a;1122. 数组的相对排序 解法1&#xff1a;哈希 用集合 set 存储 arr2 中的元素。 遍历数组 arr1 &#xff0c;设当前元素为 num&#xff1a; 如果 num 在 set 中出现&#xff0c;用哈希表 hash 记录 num 和它出现的次数。否则&a…