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

news/2024/12/13 16:00:40/

【前言】

        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.


http://www.ppmy.cn/news/210159.html

相关文章

日志框架——Log4j2

日志框架——Log4j2 日志框架Log4j21. 概述2. Log4j2主要由几个重要的组件构成:3.项目中使用3.1 引入相关依赖pom.xml3.2 加入日志配置文件src/main/resources/log4j2.xml3.3 测试 日志框架Log4j2 1. 概述 Apache Log4j2是一个开源的日志记录组件,使用非常的广泛。…

LeetCode知识点总结 - 812

LeetCode 812. Largest Triangle Area 考点难度ArrayEasy 题目 Given an array of points on the X-Y plane points where points[i] [xi, yi], return the area of the largest triangle that can be formed by any three different points. Answers within 10^-5 of the …

沧田 DT812K 打印机驱动

沧田 DT812K 打印机驱动是官方提供的一款打印机驱动,本站收集提供高速下载,用于解决打印机与电脑连接不了,无法正常使用的问题,本动适用于:Windows XP / Windows 7 / Windows 8 / Windows 10 32/64位操作系统。有需要的…

LeetCode: 812. 最大三角形面积

文章目录 一. 题目1. 链接2. 框架3. 描述4. 示例5. 数据范围 二. 解题1. 思路2. 复杂度3. 源码4. 考察 一. 题目 1. 链接 题目链接:LeetCode: 812. 最大三角形面积 2. 框架 c代码框架: class Solution { public:double largestTriangleArea(vector&…

spark 实现K-means算法

spark 实现K-means算法 package kmeans; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList;. impo…

k1075停运吗_【暴雨致沪昆娄底区段多趟列车停运,广大旅客应随时关注信息】...

湖南境内,持续多天的强降雨还没有停止,沪昆线娄底车务段辖内的多个区段遭遇水害,雨量超警戒水位值,为确保旅客和列车行车安全,铁路部门对部分线路进行封锁,途经的多趟列车晚点或停运(具体车次附后)&#xf…

812. 最大三角形面积

给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。 示例: 输入: points [[0,0],[0,1],[1,0],[0,2],[2,0]] 输出: 2 解释: 这五个点如下图所示。组成的橙色三角形是最大的,面积为2。class Solution {public do…

LeetCode —— 812 最大三角形面积

问题描述 给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。 示例: 输入: points [[0,0],[0,1],[1,0],[0,2],[2,0]] 输出: 2 解释: 这五个点如下图所示。组成的橙色三角形是最大的,面积为2。 来源&#xff…