当前位置: 首页 > news >正文

.ini配置文件介绍与解析库使用

【前言】

        ini 文件是英文"Initialization"的缩写,即初始化文件。它用来配置特定应用软件以实现对程序初始化或进行参数设置。.ini文件由节(section)、键(key)、值(value)三种模块构成。在windows系统/嵌入式软件中有很多XXX.ini文件,例如System32.ini和Config.ini。

【ini文件格式】

[Setting]

INIT_FLAG=0;

VOLUME=1;

LANGUAGE=1;

        其中,[Setting]叫做节,INIT_FLAG在=号左边叫做键,0在=号右边叫做值。

【读/写 ini文件实现方式】

        作为系统支撑软件或上层应用软件,需要实现参数可配置,提高软件的二次可利用率。本文将依次使用C语言/Python语言分别进行简单介绍它们的实现与读写原理。首先,介绍C语言环境下读写ini文件的方式。        

【C语言中INI解析库】

        C语言中,可以使用INI解析库作为INI配置文件的解析工具,使用者只需在程序代码中添加头文件iniparser.h。INI解析库提供给我们用户最关心的两大方法,设置方法和参数获取方法。

#define CONFIG_NAME "Config.ini"
/* parase Config.ini file to get param */
dictionary *Config_ini = NULL;
/* reload Config.in file */
Config_ini = iniparser_load(CONFIG_NAME);
if(NULL == Config_ini){printf("cannot't parse %s file\n",CONFIG_NAME);return -1;
}
/* dictionary dump save other files pointer */
iniparser_dump(Config_ini,stderr);
/* get item value by Create_ini file */
Init_flag = iniparser_getint(Config_ini,"Setting:INIT_FLAG",-1);
Volume_flag = iniparser_getint(Config_ini,"Setting:VOLUME",-1);
English_flag = iniparser_getint(Config_ini,"Setting:LANGUAGE",-1);
printf("Init_flag:%d\n",Init_flag);
printf("Volume_flag:%d\n",Volume_flag);
printf("English_flag:%d\n",English_flag);
/* modified value in INIT_FLAG item */
iniparser_set(Config_ini,"Setting:INIT_FLAG","1");

        本实例在Linux环境下进行编译后,输出结果:

         更多功能,可以参考INI解析库中的函数片段,仔细寻找会有意外收获。如果需要将INI解析库放到Windows环境中运行,可以直接将iniparser.h包含进工程项目中,然后进行编译构建即可。

【python中configparser模块】

        在当前python3环境中,configparser是用来解析ini配置文件的解析器。其作用就是使用模块中的RawConfigParser()、ConfigParser()、SafeConfigParser()这三个方法(任选一种),创建一个对象使用对象的方法对指定的配置文件做增删改查操作。


## 读取ini配置文件信息
import os
import configparserconf = configparser.ConfigParser() # 类的实例化curpath = os.path.dirname(os.path.realpath(__file__))
path = os.path.join(curpath,'read.ini')conf.read(path,encoding="utf-8")
value = conf['select']['url']
print("通过read方法取得的值为:",value)
## 写入ini 配置文件
import os
import configparserconf = configparser.ConfigParser() # 类的实例化curpath = os.path.dirname(os.path.realpath(__file__))
path = os.path.join(curpath,'read.ini')conf.add_section('login') # 添加一个新的section
conf.set('login','username','admin')
conf.set('login','password','123123')   # 往配置文件写入数据
conf.write(open(path,'a'))  # 保存数据

        上述功能实现读取ini配置文件的信息,具体的代码逻辑本文不再赘述,只是提供一种脚本化的解析库策略。相关代码已放到平台的download页面,自行下载试用即可。

【总结】

        本文从ini配置文件在软件配置策略的角度出发,分别介绍了ini配置文件的格式,在C语言、python语言中的使用策略。最后,分别针对两种语言给出了代码片段。使用ini解析库功能,可以快速实现功能的开发和软件参数调节,实现一套软件多场景适用。

参考信息:

[1] 分享一个好用的C语言.ini文件的解析库, 嵌入式应用研究院, 2020-01-08.

[2] 了解Python之ini配置文件详解, 51Testing软件测试网, 2022-08-31.

相关文章:

.ini配置文件介绍与解析库使用

【前言】 ini 文件是英文"Initialization"的缩写,即初始化文件。它用来配置特定应用软件以实现对程序初始化或进行参数设置。.ini文件由节(section)、键(key)、值(value)三种模块构成。在windows系统/嵌入式软件中有很多XXX.ini文件,例如Syste…...

牛客网Linux错题七

1.如何在命令行查看一台linux机器的CPU、SWAP分区信息、硬盘信息?(ACD) A. cat /proc/cpuinfo B. du C. cat /proc/swaps D. df -Ih 解: cat /proc/cpuinfo查看Linux设备的CPU信息,cat /proc/swaps查看Linux设备的交换分区信息&#xf…...

牛课刷题Day5(编程题)

1.合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组 正确答案: function concat(arr1, arr2) {let carr1.concat(arr2)return c } 解析: js的Array对象提供了一个叫concat()方法,连接两个或更多的数组&#x…...

javascript基础二十五:说说你对函数式编程的理解?优缺点?

一、是什么 函数式编程是一种"编程范式"(programming paradigm),一种编写程序的方法论 主要的编程范式有三种:命令式编程,声明式编程和函数式编程 相比命令式编程,函数式编程更加强调程序执行…...

常见JavaScript加密算法、JS加密算法

常见JavaScript加密算法、JS加密算法 一、SHA-256加密算法二、Base64编码算法三、RSA加密算法四、AES加密算法五、HMAC-SHA256算法六、PKCS7填充 一、SHA-256加密算法 SHA-256是一种密码散列函数,可以将任意长度的消息压缩成256位的摘要值。以下是使用JavaScript实现…...

题解2023.6.5

D - Factorial Divisibility 对于a[i]>x的数一定可以整除&#xff0c;考虑a[i]<x的数&#xff0c;因为(x1)*x! (x1)! 统计ai出现的次数, 把他转换为大的阶乘, 如果, 最终1到x - 1, ai的出现次数均为0则说明可以被x!整除 #pragma GCC optimize(2) #pragma GCC optimiz…...

与声音计算研究相关的挑战赛——DCASE和L3DAS

前言&#xff1a;在本专栏的系列博文中&#xff0c;我将包含声学场景识别、声音事件检测、声源位置估计等利用机器学习或深度学习技术进行研究的、基于声音信号的相关工作成为“声音计算”。 本篇博文主要介绍与声音计算相关的两个近些年持续跟进的挑战赛&#xff1a;DCASE和L…...

实训总结-----Scrapy爬虫

1.安装指令 pip install scrapy 2.创建 scrapy 项目 任意终端 进入到目录(用于存储我们的项目) scrapy startproject 项目名 会在目录下面 创建一个以 项目名 命名的文件夹 终端也会有提示 cd 项目名 scrapy genspider example example.com 3.运行爬虫指令 scrapy craw…...

前端开发职业规划指南:如何做好职业规划与发展

引言 前端开发是目前互联网行业中最火热的职业之一&#xff0c;也是非常具有发展前景的职业之一。随着互联网技术的不断更新和发展&#xff0c;前端开发的职业规划也在不断地发生变化。本文将从几个方面来探讨前端开发的职业规划。 一、职业发展路径 1.前端初级工程师 前端初…...

创业第一步:如何写好商业计划书

即使你的项目不需要融资&#xff0c;你也把标准商业计划书作为一个工具模板来应用&#xff0c;帮助更全面的盘点你要做的事情。 撰写一份性感的商业计划书如同造房子&#xff1a;第一步是科学设计&#xff0c;打好结构&#xff08;有清晰的撰写逻辑&#xff09;&#xff1b;第…...

【Linux驱动】字符设备驱动相关宏 / 函数介绍(module_init、register_chrdev)

驱动运行有两种方式&#xff1a; 方式一&#xff1a;直接编译到内核&#xff0c;Linux内核启动时自动运行驱动程序方式二&#xff1a;编译成模块&#xff0c;使用 insmod 命令加载驱动模块 我们在调试的时候&#xff0c;采用第二种方式是最合适的&#xff0c;每次修改驱动只需…...

axios解决跨域问题

Vue3中使用axios访问聚合的天气API&#xff0c;出现跨域问题&#xff0c;需要在前端进行一些配置&#xff1a; 首先是修改vue.config.js&#xff1a; const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,devServe…...

R语言作图——热图聚类及其聚类结果输出

代码 不多说了&#xff0c;做个记录&#xff0c;代码如下。 library(pheatmap) library(RColorBrewer) # args commandArgs(TRUE) betafile "twist_common_panel_434.csv" infofile "twist_common_panel_434.txt" title "twist_common_panel&qu…...

Tomcat优化

Tomcat优化 Tomcat默认安装下的缺省配置并不适合生产环境&#xff0c;它可能会频繁出现假死现象需要重启&#xff0c;只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方面&#xff0c;分别为操作系统优化&#xff08;内核参数优化&#xff09;&#xff0c;Tom…...

我的GIT练习TWO

目录 前言 GIT安装教程 Git作者 GIT优点 GIT缺点 为什么要使用 Git GIT练习TWO C1 C2 C3 C4 C5 C6 C7 总结 前言 Git 是一个分布式版本控制及源代码管理工具;Git 可以为你的项目保存若干快照&#xff0c;以此来对整个项目进行版本管理 GIT安装教程 点击进入查看教程…...

个人器件库整理

样品本 包含如下&#xff1a; 电容器件&#xff1a; 元件值封装备注钽电容47uF 10V1206钽电容10uF 10V1206电容10uF 10% 10V0603X5R&#xff0c;CL10A106KP8NNNC 元件值封装备注100nF电容50V&#xff0c;10%0603 电阻器件&#xff1a; 元件值封装备注75 Ω \Omega Ω…...

javascript——内存管理

JavaScript内存管理是Web开发中的一个重要主题。正确管理内存可以提高应用程序的性能和稳定性。本文将介绍JavaScript中的内存管理概念、常见的内存泄漏问题以及一些有效的内存管理技巧。 什么是JavaScript内存管理&#xff1f; JavaScript具有自动内存管理机制&#xff0c;开…...

Qt5.15.2安卓Android项目开发环境配置

1、Qt Creator 4.11.2 官方下载&#xff1a;https://download.qt.io/archive/qtcreator/4.11/4.11.2/ 镜像下载&#xff1a;https://mirrors.cloud.tencent.com/qt/archive/qtcreator/4.11/4.11.2/ 2、Qt 5.15.2 Android 官方更新器内部下载 参考&#xff1a;https://blog…...

第四十三章 弹跳训练2(灵识扫描)

“再不脱离便会陷死在里面。”这个声音似乎来自脑海深处某个隐秘角落。 双眼一睁&#xff0c;灵识退去&#xff0c;空空的头壳兀自嗡嗡作响&#xff0c;一股说不清道不明的失落感笼罩全身&#xff0c;似要将自己拖入抑郁的谷底。 不&#xff01;没什么好失落沮丧的&#xff01;…...

【location对象的方法,history对象,navigator--BOM】

location对象的方法 location.assign()//跟href一样&#xff0c;可以跳转页面&#xff08;也称重定向页面&#xff09; location.replace()//替换当前页面&#xff0c;因为不记录历史&#xff0c;所以不能后退页面 location.reload()//重新加载页面&#xff0c;相当于刷新按钮或…...

OpenClaw量化对比:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF不同精度版本的自动化任务表现

OpenClaw量化对比&#xff1a;Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF不同精度版本的自动化任务表现 1. 测试背景与实验设计 去年在开发一个自动化文档处理流程时&#xff0c;我发现OpenClaw的任务成功率与底层模型量化精度密切相关。当时使用Q8版本处理Excel文…...

IntelliJ IDEA突然无法启动的快速修复指南

1. IntelliJ IDEA突然无法启动的常见原因 作为一名常年与IntelliJ IDEA打交道的开发者&#xff0c;我遇到过无数次IDE突然罢工的情况。最让人头疼的是&#xff0c;明明昨天还用得好好的&#xff0c;今天双击图标却毫无反应。这种情况通常由以下几个原因导致&#xff1a; 首先是…...

3000 字深度拆解:Paperxie AI 期刊写作界面全解析 —— 科研人必看的 “投刊效率密码”

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/期刊论文https://www.paperxie.cn/ai/journalArticleshttps://www.paperxie.cn/ai/journalArticles 一、引言&#xff1a;科研人的投稿困局&#xff0c;藏在每一个被忽略的界面细节里 当科研人熬过无数个深…...

UE5场景过曝/白屏排查指南:从后期处理体积到项目设置的实战修复

1. 当UE5场景变成"雪盲症"时该怎么办&#xff1f; 第一次打开UE5项目看到白茫茫一片的时候&#xff0c;我差点以为显卡烧了。这种场景过曝现象就像在雪山没戴墨镜&#xff0c;所有细节都被强光吞噬。新手遇到这种情况别慌&#xff0c;我整理了从"急救措施"…...

【AI重塑科研】无需通读全文,三步教你用大模型高效产出文献综述

1. 为什么你需要AI辅助文献综述&#xff1f; 每次打开文献库看到上百篇待读论文就头皮发麻&#xff1f;我完全理解这种感受。去年准备开题报告时&#xff0c;导师要求我两周内完成50篇核心文献的综述&#xff0c;当时差点崩溃。直到我发现用大模型处理文献可以节省90%的时间&am…...

如何用SVGnest提升材料利用率:从问题到解决方案的完整指南

如何用SVGnest提升材料利用率&#xff1a;从问题到解决方案的完整指南 【免费下载链接】SVGnest An open source vector nesting tool 项目地址: https://gitcode.com/gh_mirrors/sv/SVGnest 制造业材料浪费的隐形成本&#xff1a;您的企业是否正在损失30%利润&#xff…...

AnythingtoRealCharacters2511效果展示:动漫角色真人化案例

AnythingtoRealCharacters2511效果展示&#xff1a;动漫角色真人化案例 你有没有想过&#xff0c;如果自己喜欢的动漫角色真的出现在现实世界里&#xff0c;会是什么样子&#xff1f;不是那种粗糙的3D建模&#xff0c;也不是简单的滤镜叠加&#xff0c;而是看起来就像用专业相…...

告别混乱!用CANoe的arxml数据库高效管理车载网络信号(附Signal/PDU/Frame创建全流程)

告别混乱&#xff01;用CANoe的arxml数据库高效管理车载网络信号&#xff08;附Signal/PDU/Frame创建全流程&#xff09; 当车载网络从简单的CAN总线发展到包含FlexRay、以太网等多协议混合架构时&#xff0c;工程师们面临的信号管理复杂度呈指数级增长。一个典型的域控制器项目…...

亚洲美女-造相Z-Turbo惊艳案例分享:高还原度旗袍/汉服/都市职场风人像生成

亚洲美女-造相Z-Turbo惊艳案例分享&#xff1a;高还原度旗袍/汉服/都市职场风人像生成 最近在玩一个挺有意思的AI模型&#xff0c;叫“亚洲美女-造相Z-Turbo”。这名字听起来有点技术范儿&#xff0c;但说白了&#xff0c;它就是个专门生成亚洲女性人像的AI工具。 你可能用过…...

从0到1:Java+AI入门实战,看完直接上手项目

文章目录前言环境准备&#xff1a;别急着装Python&#xff0c;先把JDK升到21第一滴血&#xff1a;让Java程序说出"人话"进阶玩法&#xff1a;给AI装上"记忆"和"工具"让AI记住你们聊过啥让AI能查数据库、调接口实战项目&#xff1a;搭建私有知识库…...