当前位置: 首页 > 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.

http://www.lryc.cn/news/92084.html

相关文章:

  • 牛客网Linux错题七
  • 牛课刷题Day5(编程题)
  • javascript基础二十五:说说你对函数式编程的理解?优缺点?
  • 常见JavaScript加密算法、JS加密算法
  • 题解2023.6.5
  • 与声音计算研究相关的挑战赛——DCASE和L3DAS
  • 实训总结-----Scrapy爬虫
  • 前端开发职业规划指南:如何做好职业规划与发展
  • 创业第一步:如何写好商业计划书
  • 【Linux驱动】字符设备驱动相关宏 / 函数介绍(module_init、register_chrdev)
  • axios解决跨域问题
  • R语言作图——热图聚类及其聚类结果输出
  • Tomcat优化
  • 我的GIT练习TWO
  • 个人器件库整理
  • javascript——内存管理
  • Qt5.15.2安卓Android项目开发环境配置
  • 第四十三章 弹跳训练2(灵识扫描)
  • 【location对象的方法,history对象,navigator--BOM】
  • 论文笔记:Normalizing Flows for Probabilistic Modeling and Inference
  • java 异常类介绍
  • shiro 550 反序列化rce
  • 【C++】---模板初阶(超详练气篇)
  • windows系统典型漏洞分析
  • WPF开发txt阅读器:需求分析和文件读写
  • C++服务器框架开发9——日志系统LogFormatter_4/各个类的关系梳理/std::function/std::get
  • arm平台上的MNN编译与运行
  • python 编译安装指定版本 for linux
  • 在Linux系统下基于Docker搭建Redis集群
  • 牛客网刷题Day5