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.mzph.cn/news/129590.shtml

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

相关文章

剑指JUC原理-10.并发编程大师的原子累加器底层优化原理(与人类的优秀灵魂对话)

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…

第2篇 机器学习基础 —(3)机器学习库之Scikit-Learn

前言:Hello大家好,我是小哥谈。Scikit-Learn(简称Sklearn)是Python 的第三方模块,它是机器学习领域当中知名的Python 模块之一,它对常用的机器学习算法进行了封装,包括回归(Regressi…

5+非肿瘤+细胞凋亡相关生信思路,请自行查阅

今天给同学们分享一篇生信文章“Genome-wide identification and functional analysis of dysregulated alternative splicing profiles in sepsis”,这篇文章发表在J Inflamm (Lond)期刊上,影响因子为5.1。 结果解读: 脓毒症患者和健康对照…

实验室装修公司的线上推广成功案例_上海添力网络科技

2018年7月,也是我的书《快速见效的企业网络营销方法 B2B 大宗B2C》出版后两个月,某装修公司的市场部总监在阅读完这本书后,找到了我,希望能帮到他们公司提升线上获客能力。 当时他们已经成立了线上推广团队,配置了SEM岗…

闯关打卡小程序的效果如何

闯关打卡是一种以任务关卡为基础的打卡模式,管理员可配置活动任务关卡,成员加入任务后需依次解锁,打卡完成任务,像闯关游戏一样完成所有任务。 通过打卡活动聚集一群有共同目标、兴趣的人,通过打卡的方式促进共同目标…

LeetCode:117. 填充每个节点的下一个右侧节点指针 II(C++)

117. 填充每个节点的下一个右侧节点指针 II 题目描述: 给定一个二叉树: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将…

iOS报错命名空间“std”中的“unary_function”

刚刚将我的 Xcode 升级到 15.0,突然它开始在 RCT_Folly 中出现以下错误 No template named unary_function in namespace std; did you mean __unary_function?我尝试删除缓存数据和派生数据并清理构建。也尝试删除 pod 和 node_modules。但没有任何帮助。 于是我…

HTTP 协议请求头 If-Match、If-None-Match 和 ETag

概述 在 HTTP 协议中,请求头 If-Match、If-None-Match、If-Modified-Since、If-Unmodified-Since、If-Range 主要是为了解决浏览器缓存数据而定义的请求头标准,按照协议规范正确的判断和使用这几个请求头,可以更精准的处理浏览器缓存&#x…

0基础学编程从哪里入手?零基础学些代码怎么入手

0基础学编程从哪里入手?零基础学些代码怎么入手? 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件,而且可以开发大型的软件,向如图…

你的编程能力从什么时候开始突飞猛进?

你的编程能力从什么时候开始突飞猛进? 回顾一下,我的技术能力(不仅仅是编程,而是解决问题的能力)的进步大约有几个重要的节点: 1. 刚入行时的入门练习题 这个是当年狼厂网页搜索部门的传统,不知道现在还有…

sql server 对称加密例子,很好用

-- 创建对称密钥 CREATE MASTER KEY ENCRYPTION BY PASSWORD 输入一个对称密钥; -- 创建证书 CREATE CERTIFICATE MyCertificate WITH SUBJECT 创建一个证书名称; -- 创建对称密钥的加密密钥 CREATE SYMMETRIC KEY MySymmetricKey WITH ALGORITHM AES_128 ENCRY…

前端性能分析工具

前段时间在工作中,需要判断模块bundle size缩减对页面的哪些性能产生了影响, 因此需要了解前端的性能指标如何定义的,以及前端有哪些性能分析工具, 于是顺便整理了一篇笔记, 以供前端小白对性能这块知识点做一个入门级的了解. 页面渲染 在了解性能指标和分析工具之前,有必要先…

Windows Server 2016使用MBR2GPT.EXE教程!

什么是MBR2GPT.exe? MBR2GPT.exe是微软提供的专业工具,可在命令提示符下运行。使用该工具可以将引导磁盘从MBR转换为GPT分区样式,而无需修改或删除所选磁盘上的任何内容。 在Windows Server 2019和Windows 10(1703…

时间序列聚类的直观方法

一、介绍 我们将使用轮廓分数和一些距离度量来执行时间序列聚类实验,同时利用直观的可视化,让我们看看下面的时间序列: 这些可以被视为具有正弦、余弦、方波和锯齿波的四种不同的周期性时间序列 如果我们添加随机噪声和距原点的距离来沿 y 轴…

#stm32整理(一)flash读写

以这篇未开始我将进行stm32学习整理为期一个月左右完成stm32知识学习整理内容顺序没有一定之规写到哪想到哪想到哪写到哪,主要是扫除自己知识上的盲区完成一些基本外设操作。 以stm32f07为例子进行flash读写操作 stm32flash简介 参考资料正点原子和野火开发手册 …

自动曝光算法(第二讲)

序言 第一章说了,自动曝光算法的目的:已知当前raw图亮度、当前曝光时间、当前增益和目标亮度,当环境光发生变化的时候,是通过控制增益、曝光时间和光圈使raw图的亮度,保持在目标亮度附近。本章想讲一下目标亮度的相关…

路由器基础(九):防火墙基础

防火墙 (Fire Wall) 是网络关联的重要设备,用于控制网络之间的通信。外部网络用户的访问必须先经过安全策略过滤,而内部网络用户对外部网络的访问则无须过滤。现在的防火墙还具有隔离网络、提供代理服务、流量控制等功能。 一、三种防火墙技术 常见的…

hadoop进程启停管理(看这一篇就足够了!)

一、一键启停脚本 Hadoop HDFS组件内置了HDFS集群的一键启停脚本 $HADOP_HOME/sbin/start-all.sh,一键启动HDFS集群 执行原理: 在执行此脚本的机器上,启动SecondaryNameNode 读取core-site.xml内容(fs.defaultFS项),确认NameNode所在机器&…

【MySQL索引与优化篇】数据库的设计规范

数据库的设计规范 文章目录 数据库的设计规范1. 范式2. 键和相关属性的概念3. 第一范式4. 第二范式5. 第三范式6. 小结7. 反范式化7.1 概述7.2 反范式的新问题7.3 反范式适用场景 8. 巴斯范式9. 第四范式、第五范式和域键范式 1. 范式 在关系型数据库中,关于数据表…

【Docker】Linux路由连接两个不同网段namespace,连接namespace与主机

如果两个namespace处于不同的子网中,那么就不能通过bridge进行连接了,而是需要通过路由器进行三层转发。然而Linux并未像提供虚拟网桥一样也提供一个虚拟路由器设备,原因是Linux自身就具备有路由器功能。 路由器的工作原理是这样的&#xff…