开源云真机平台-Sonic平台-python自定义脚本-config.ini方式实现全局配置参数的读写操作

news2024/11/18 22:54:17

【主要功能】

config.ini方式实现全局配置参数的读写操作

使用python实现以下功能:
1、使用将接口获取的变量值,写入到当前目录下的config文件中,如delayTime=10;
2、读取当前目录下的config文件中,特定变量的值,如delayTime=10;
3、若config文件或者节点不存在,则自动进行创建;

【详细代码】

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import configparser
import os


# 封装函数:写入配置文件
def write_config_ini(key, value, section="DEFAULT_SECTION", config_file='config.ini'):
    # 创建配置文件对象
    config = configparser.ConfigParser()

    # 若配置文件已存在,则读取原有内容
    if os.path.exists(config_file):
        config.read(config_file, encoding='utf-8')

    # 若配置文件不存在,则自动创建
    else:
        config.add_section(f'{section}')

    # 若section不存在,则创建新section
    if not config.has_section(section):
        config.add_section(f'{section}')


    # 设置变量值
    config[f'{section}'][key] = str(value)

    # 写入配置文件
    with open(config_file, 'w', encoding='utf-8') as f:
        config.write(f)

# 封装函数:一次写入多个值至配置文件,适用于大量数据写入,提高性能
def write_configs_ini(keys_values_dict, section="DEFAULT_SECTION", config_file='config.ini'):
    # 创建配置文件对象
    config = configparser.ConfigParser()

    # 若配置文件已存在,则读取原有内容
    if os.path.exists(config_file):
        config.read(config_file, encoding='utf-8')

    # 若配置文件不存在,则自动创建
    else:
        config.add_section(f'{section}')

    # 若section不存在,则创建新section
    if not config.has_section(section):
        config.add_section(f'{section}')

    # 设置变量值
    for key, value in keys_values_dict.items():
        config[f'{section}'][key] = str(value)

    # 写入配置文件
    with open(config_file, 'w', encoding='utf-8') as f:
        config.write(f)

# 封装函数:读取配置文件
def read_config_ini(key,  section="DEFAULT_SECTION",config_file='config.ini'):
    # 创建配置文件对象
    config = configparser.ConfigParser()

    # 若配置文件存在,则读取变量值
    if os.path.exists(config_file):
        config.read(config_file, encoding='utf-8')
        value = config[f'{section}'].get(key)
        return value

    # 若配置文件不存在,则返回空值
    else:
        return None


# 打印config文件的内容
def type_config(config_file='config.ini'):
    # 若配置文件存在,则读取所有变量值
    if os.path.exists(config_file):
        result = open(config_file, "r", encoding='utf-8').read()
        print(f"result={result}")
        return result

    # 若配置文件不存在,则返回空值
    else:
        return None


if __name__ == '__main__':
    # 示例:写入变量值到配置文件
    write_config_ini('delayTime', 98765,"HRD1")

    key_values = {'key1': "value1", 'key2': "value2"}
    write_configs_ini(key_values,"HRD1")

    type_config()

    # 示例:从配置文件中读取变量值
    value = read_config_ini('delayTime',"HRD1")
    print(f"read result={value}")

【运行效果】

result=[DEFAULT_SECTION]
delayTime = 98765
key1 = value1
key2 = value2

[HRD]
delayTime = 98765

[HRD1]
delayTime = 98765
key1 = value1
key2 = value2


read result=98765

实测,可以在不同的脚本中实现写操作和读操作,数据真实有效。

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

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

相关文章

【Java】equals和hashCode需要一起重写的原因

方法实现: equals和hashCode两个方法是属于Object基类的两个方法,我们先来看看两个方法的默认实现。 equals方法: public boolean equals(Object obj) {return (this obj);} 可以看到equals方法的默认实现是使用 比较两个对象&#xff0c…

Selenium使用指南(超详细)

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 概述 selenium是网页应用中最流行的自动化测试工具&#xff0c…

Kafka-生产者

Kafka在实际应用中,经常被用作高性能、可扩展的消息中间件。 Kafka自定义了一套网络协议,只要遵守这套协议的格式,就可以向Kafka发送消息,也可以从Kafka中拉取消息。 在实践生产过程中,一套API封装良好、灵活易用的客…

C语言——详解字符函数和字符串数组(上)

目录 一、strlen的使用和模拟实现 1.strlen()函数的介绍 2.strlen()函数的具体使用 3.strlen函数的注意事项 4.strlen函数的模拟实现 二、strcpy的使用和模拟实现 1.strcpy()函数的介绍 2.strcpy()函数的具体使用 3.strcpy()函数的注意事项 4.strcpy函数的模拟实现 …

js逆向第19例:猿人学第17题天杀的Http2.0

文章目录 一、前言二、定位关键参数三、代码实现四、参考文献一、前言 任务十七:抓取这5页的数字,计算加和并提交结果 题目已经给出来标准答案,而且此题设置为“非常简单”其关键就是HTTP/2.0请求,打开控制台查看请求接口数据如下: 二、定位关键参数 可以看到控制台显示…

计算机毕业设计-----SSH学生请假管理系统

项目介绍 本项目分为管理员、教师、学生三种角色; 教师角色包含以下功能: 教师角色登录,请假查看,审批学生请假,学生管理等功能。 管理员角色包含以下功能: 班级管理,班主任管理,公告管理,留言板管理,学生管理等功能。 学生角色包含以下…

MySQL 中有关 NULL 的三个坑

mysql sum 函数、count 函数,以及 NULL 值条件可能踩的坑。 SELECT SUM(score) FROM person ; nullSELECT COUNT(score) FROM person; 0select id from person where scoreNULL; null 显然,这三条 SQL 语句的执行结果和我们的期望不同&#xf…

一篇文章带你搞懂---全排序

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂,年薪百万! 全排序(Permutation)是指将一组元素按照一定的顺序进行排列的过程。在计算机科学中,全排序是一…

Centos系统安全设置

1 设置密码复杂度,帐号密码有效期3个月 密码复杂度要求:最小长度8位,至少2位大写字母,1位小写字母,4位数字,1位特殊字符 1)执行备份: #cp -p /etc/login.defs /etc/login.defs_bak…

zotero使用gpt

zotero使用gpt 下载 zotero下载:https://www.zotero.org/download/ 插件下载:https://github.com/MuiseDestiny/zotero-gpt?tabreadme-ov-file 插件安装 zotero中选择 工具->添加组件 选择右上角的齿轮,选择Install add-on from fil…

c++继承和派生(1)

目录 1.含义:从不同层面看的,同一种意思 2. 继承的使用场景 1. 共同之处 2. 迭代更新 3. 代码重构 3. 继承的基本语法 4. 继承了什么 1. 查看占用内存大小 2. 使用vs自带的功能查看类的内存分布 布局: 3. 结果 5. pr…

软件测试|使用Python提取出语句中的人名

简介 在自然语言处理(NLP)中,提取文本中的人名是一项常见的任务。Python作为一种流行的编程语言,拥有强大的NLP库和工具,使我们能够轻松地进行这项任务。在本文中,我们将使用Python示例来演示如何提取文本…

Linux第23步_安装windows下的STM32CubeProgrammer软件和安装 DFU驱动程序

STM32CubeProgrammer软件是通过USB3.0接口烧写系统软件。 STM32CubeProgrammer需要java运行环境,因此需要安装JAVA软件。 Java 运行环境版本必须是 V1.7 及以上,一定要用 64位的,和win系统一致,否则使用 STM32CubeProgrammer烧…

深入解析JavaScript中的函数绑定和命名函数表达式

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 函数是JavaScript中最重要的组成部分之一。但是函数的this绑定和作用…

Power Query 中常用的数据清洗、转换操作

(一)数据筛选、保留、删除、去重 1、数据筛选 操作步骤 选中列——点击列名右侧箭头——进行筛选 可选操作 勾选文本筛选器:等于/不等于、开头是/开头不是、结尾是/结尾不是、包含/不包含数字筛选器:等于/不等于、大于/大于等于…

harbor https

harbor https部署 准备docker-compose安装https 证书harbor安装访问harbor推镜像到harbor 准备 192.168.112.99,harbor,centos7 192.168.112.3,测试机,centos7 docker版本:docker-ce 20.10.16(部署参考&a…

主流浏览器设置代理IP之搜狗浏览器

给浏览器设置代理IP是目前代理IP的主流使用场景之一,接下来小编就手把手教你如何对搜狗浏览器进行代理IP设置 注:本次使用IP来源于携趣代理平台 搜狗浏览器内设置IP代理 1、首先需要进入浏览器【设置】 2.点击【代理设置】选择【代理服务器设置】然后进…

ITE IT6801FNBX HDMI接收器 芯片

一、物料概述 IT6801FN是一款单端口HDMI接收器,可在HDMI1.4和MHL2.1双模式下工作,完全兼容MHL2.1、HDMI 1.4a、HDMI 1.4a3D和HDCP1.4,还可向后兼容DVI 1.0规格。IT6801FN具有深彩色功能(高达36位),可确保接…

腾讯开源AI工具PhotoMaker,无需训练模型就能保持脸部一致随意换装。

腾讯开源AI工具PhotoMaker,无需训练模型就能保持脸部一致随意换装。 最近,AI文本到图像生成领域取得了显著进展,然而,现有的个性化生成方法已经无法同时满足用户的需求,这次腾讯发布了PhotoMaker框架,可以在…

IaC基础设施即代码:Terraform 通过后端使用 alicloud的OSS 实现资源管理

目录 一、实验 1.环境 2.Windows创建Terraform后端项目 3.Windows实例化Terraform后端项目 3.Windows给Terraform项目添加alicloud阿里云OSS (实现代码与资源分离) 4.Windows给Terraform项目添加封装的模块 5.Terraform通过后端使用 alicloud阿里…