当前位置: 首页 > 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;相当于刷新按钮或…...

markdownReader:终极Chrome插件,让本地Markdown文件阅读体验提升300%

markdownReader&#xff1a;终极Chrome插件&#xff0c;让本地Markdown文件阅读体验提升300% 【免费下载链接】markdownReader markdownReader is a extention for chrome, used for reading markdown file. 项目地址: https://gitcode.com/gh_mirrors/ma/markdownReader …...

Chlorophyll印相稀缺资源包泄露!含19世纪银盐配方数字化映射表、327张原生植物扫描底片及MJ v6.2专用--style raw参数集(限今日领取)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Chlorophyll印相的技术起源与美学范式 Chlorophyll印相&#xff08;叶绿素印相&#xff09;并非传统摄影术的延伸&#xff0c;而是一种融合植物生物化学、光敏反应与数字图像处理的跨媒介实践。其技术雏…...

QAbstractTableModel进阶实战:构建可编辑数据表格的完整指南

1. 从零理解QAbstractTableModel的核心机制 第一次接触Qt模型视图框架时&#xff0c;很多人会被QAbstractTableModel这个抽象类吓到。但当我真正用它完成第一个可编辑表格后&#xff0c;发现它的设计其实非常优雅。想象你正在开发一个学生管理系统&#xff0c;需要展示包含姓名…...

AAAI‘2026 模型记错了,检索也救不了?KG+TruthfulRAG想解决这个死结

背景介绍 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;在生成与理解任务上表现突出&#xff0c;但其内部“参数化知识”具有静态、滞后的特点&#xff1a; 面对时效性知识、专业知识、隐私知识等&#xff0c;模型可能缺乏覆盖&#xff1b;即便检索增强生成&#…...

在vSphere ESXi 7.0上跑MacOS Big Sur?这份保姆级避坑指南帮你一次搞定

在vSphere ESXi 7.0上部署macOS Big Sur的深度避坑指南 虚拟化环境中运行macOS一直是技术爱好者和企业开发者的热门需求。本文将深入探讨在vSphere ESXi 7.0平台上安装macOS Big Sur时可能遇到的各种技术难题及其解决方案&#xff0c;帮助您避开那些让大多数用户头疼的"坑…...

SteamAutoCrack:3步自动化破解Steam游戏的终极解决方案

SteamAutoCrack&#xff1a;3步自动化破解Steam游戏的终极解决方案 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack 你是否厌倦了每次想离线玩游戏时都要手动破解的繁琐过程&#xff1f…...

原来市面上这些匹克球装备制造厂,都有啥独特之处?

匹克球运动近年来愈发火热&#xff0c;市面上的匹克球装备制造厂也如雨后春笋般涌现&#xff0c;每个品牌都有其独特的优势和特点。下面为你介绍其中一部分具有代表性的厂家及其独特之处。凯瑞麟体育用品&#xff1a;科技与文化的融合凯瑞麟体育用品成立于2025年11月&#xff0…...

HBase集群启动后秒退?手把手教你排查ZooKeeper路径配置与htrace-core缺失问题

HBase集群启动后秒退&#xff1f;深度排查ZooKeeper路径与依赖缺失问题 当你在深夜部署HBase集群时&#xff0c;看到服务启动后几秒钟内突然消失&#xff0c;那种感觉就像在黑暗中摸索开关。这不是简单的配置错误&#xff0c;而是系统在向你发出求救信号。让我们像侦探一样&…...

量子计算误差缓解技术解析与应用实践

1. 量子计算误差缓解技术概述 量子计算中的误差主要来源于量子比特与环境相互作用导致的退相干、量子门操作的不完美性以及测量误差。这些误差会随着量子电路深度的增加而累积&#xff0c;严重影响计算结果的可靠性。误差缓解技术旨在通过硬件和软件层面的方法&#xff0c;在不…...

TQVaultAE终极指南:解锁泰坦之旅无限仓库与装备管理新境界

TQVaultAE终极指南&#xff1a;解锁泰坦之旅无限仓库与装备管理新境界 【免费下载链接】TQVaultAE Extra bank space for Titan Quest Anniversary Edition 项目地址: https://gitcode.com/gh_mirrors/tq/TQVaultAE 你是否曾在泰坦之旅的冒险中&#xff0c;面对满仓的传…...