首页 > 其他分享 >Archi - ini配置

Archi - ini配置

时间:2024-03-11 13:33:27浏览次数:24  
标签:Archi conf 配置文件 section 配置 value ini key

ini配置文件 : https://blog.csdn.net/first_bug/article/details/129693732ini配置文件ini文件是initialization file的缩写,即初始化文件,是widows系统配置文件所采用的存储格式。
文件扩展名: .ini
ini配置文件的后缀名也不一定必须是.ini, 也可以是.cfg, .conf或者是.txt
ini文件格式ini配置文件由参数, 节, 注解组成
参数(parameter)以键值对的形式存在
name=value1每个参数都有一个name和一个value,name和value由等号=分隔
节(section)所有的键值对都是以节section为单位结合在一起的
所有的section名称都是独占一行,并且section名字都被方括号包围着[ ]
在section声明后的所有parameters都属于这个section
一个section没有明显的结束标识符,一个section的开始就是上一个section的结束
section不能重复,数据通过section去查找,每个seletion下可以有多个key和value的键值对
[section]1注解comments使用分号表示, 在分号后面的文字,直到该行结尾全部为注解。
;comment ini文件的数据格式例子1例子[Section1] ;section namekeyname1=value1keyname2=value2
[Section2] ;section namekeyname3=value3keyname4=value41234567section用来表示一个段落,ini文件可能是项目中共用的,使用section段名来区分不同用途的参数区
;串口配置实例[port]portname=COM4port=41234其他说明在windows系统中,INI文件很多,最重要的是System.ini , System32.ini 和 Win.iniini文件主要存放用户所作的选择以及系统的各种参数,用户可用通过修改ini文件,来改变应用程序和系统的很多配置从windows95开始,在windows系统中推出了注册表的概念,ini文件在windows系统的地位开始下降。注册表可以使程序和系统都把许多参数和初始化信息存放进注册表中。通常将服务器相关的配置信息写入到ini配置文件,然后ini配置文件的路径通过系统环境变量XXX_CONFIG_PATH来进行动态指定ini配置文件(python)python3中自带configparser模块来读取ini文件
import configparser
#文件路径cfgpath = "cfg.ini"# 创建管理对象conf = configparser.ConfigParser()# 读ini文件conf.read(cfgpath,encoding="utf-8")     #python3需要加个参数:encoding="utf-8"# 获取所有的sectionsections = conf.sections()print(sections)  # 返回listitems = conf.items('serialport')  # 参数是 section的名称print(items)  # list里面对象是元祖12345678910111213remove# 删除一个section中的一个item(以键值KEY为标识)conf.remove_option('serialport', "port")      # 参数  section名   key名# 删除整个section这一项conf.remove_section('serialport')1234add# 添加一个sectionconf.add_section("serialport")12# 往section添加key和valueconf.set("serialport", "port", "com4")12writewrite写入有两种方式
删除原文件内容,重新写入
conf.write(open(cfgpath, "w"))  # 删除原文件重新写入1在原文件基础上继续写入内容,追加模式
conf.write(open(cfgpath, "a"))  # 追加模式写入1remove和set方法并没有真正的修改ini文件内容,只有当执行conf.write()方法的时候,才会修改ini文件内容
写入中文的话,需要加上写入的编码格式:encoding=“utf-8”
# 修改section里面的值conf.set("week", "day", "星期一")  # 写入中文conf.write(open(cfgpath, "a", encoding="utf-8"))  # a模式 编码格式123python例子config.ini文件
[strings] #Mode: train, test, serve配置执行器的工作模式 mode = train #配置模型文件的存储路径 working_directory = model #配置训练文件的路径 dataset_path=train_data/ 
[ints] #配置分类图像的种类数量 num_dataset_classes=10 #配置训练数据的总大小 dataset_size=50000 #配置图像输入的尺寸 im_dim=32 num_channels = 3 #配置训练文件的数量 num_files=5 #配置每个训练文件中的图像数量 images_per_file=10000 #配置批训练数据的大小 batch_size=32 
[floats] #配置Dropout神经元失效的概率 rate=0.5 1234567891011121314151617181920212223242526解析
import configparser #定义读取配置文件函数,分别读取section的配置参数,section包括ints、floats、strings def get_config(config_file='./config.ini'):     parser=configparser.ConfigParser()     parser.read(config_file,encoding="utf-8")     #获取整型参数,按照key-value的形式保存     _conf_ints = [(key, int(value)) for key, value in parser.items ('ints')]     #获取浮点型参数,按照key-value的形式保存     _conf_floats = [(key, float(value)) for key, value in parser.items ('floats')]     #获取字符型参数,按照key-value的形式保存     _conf_strings = [(key, str(value)) for key, value in parser.items ('strings')]     #返回一个字典对象,包含读取的参数     print(_conf_ints)    return dict(_conf_ints + _conf_floats + _conf_strings) 1234567891011121314返回的就是 字典类型
ini配置文件(c语言)详细可以参考: https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getprivateprofileint
writeWritePrivateProfileString
BOOL WritePrivateProfileString(  [in] LPCSTR lpAppName,  [in] LPCSTR lpKeyName,  [in] LPCSTR lpString,  [in] LPCSTR lpFileName);123456lpAppName
节section名
lpKeyName
键值对的键名,如果为NULL,删除整个节
lpString
键值对的值,如果为NULL,对应的键将被删除
lpFileName
ini文件路径及名称
返回值:成功非0,失败0
readGetPrivateProfileInt
UINT GetPrivateProfileInt(  [in] LPCTSTR lpAppName,  [in] LPCTSTR lpKeyName,  [in] INT     nDefault,  [in] LPCTSTR lpFileName);123456lpAppName 节名lpKeyName 键名nDefault 默认值,如果没找到则返回lpFileName ini文件名返回键对应的值,失败返回默认值GetPrivateProfileString
DWORD GetPrivateProfileString(  [in]  LPCTSTR lpAppName,  [in]  LPCTSTR lpKeyName,  [in]  LPCTSTR lpDefault,  [out] LPTSTR  lpReturnedString,  [in]  DWORD   nSize,  [in]  LPCTSTR lpFileName);12345678lpReturnedString 接收返回数组的bufnSize buf的大小返回复制到lpReturnedString中的字节数c例子读配置文件
[strings] mode = train 
[ints] dataset_size=50000 
[floats]rate=0.5 12345678#include <stdio.h>#include <windows.h>
int main(){char mode [50];int mode_len =  GetPrivateProfileString(  "strings",  "mode",  NULL,  mode,  50,  "./config.ini");int dataset_size = GetPrivateProfileInt(  "ints",  "dataset_size",  0,  "./config.ini");printf("mode: %s\r\n",mode);printf("dataset_size: %d\r\n",dataset_size);return 0;}
12345678910111213141516171819202122232425读浮点数
没有内置读浮点数的函数,需要自己实现一个。
float GetPrivateProfileFloat(LPCSTR lpAppName,LPCSTR lpKeyName,INT nDefault,LPCSTR lpFileName){float f = nDefault;char strValue[50] = {0};
GetPrivateProfileString(lpAppName,lpKeyName,"",strValue,50,lpFileName);if(strlen(strValue) != 0){f= (float)atof(strValue);}return f;}1234567891011参考微软手册: https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getprivateprofileint————————————————
                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                        原文链接:https://blog.csdn.net/first_bug/article/details/129693732

标签:Archi,conf,配置文件,section,配置,value,ini,key
From: https://www.cnblogs.com/frankcui/p/18065889

相关文章

  • Docker的安装及镜像加速的配置
    目录一.切换到root二.卸载旧版docker三.配置docker的yum库四.安装Docker五.Docker的启动和验证六.配置Docker阿里云镜像加速(全程免费)一.切换到rootsu二.卸载旧版docker首先如果系统中已经存在旧的Docker,则先卸载:yumremovedocker\docker-client\docker-clie......
  • 【Spring】BeanDefinition 深入了解
    1 前言今天想细细研究下BeanDefinition,至于为什么,主要是看了很多遍,没太关注mergedBeanDefinition所以比较好奇,它是干啥的呢?所以得先搞清BeanDefinition,开整。2 源码分析我们得先知道BeanDefinition在Spring这个大框架下是个什么位置。我的理解它就类似于Java中的......
  • Kubeadm init 自遇报错合集及解决方案
    kubeadminit命令:kubeadminit\--image-repositoryregistry.aliyuncs.com/google_containers\--kubernetes-version=v1.28.2\--apiserver-advertise-address=(masternodeipaddress)\--pod-network-cidr=192.244.0.0/16\--service-cidr=192.96.0......
  • 【vscode】vscode配置python
    【vscode】vscode配置python前言‍每次配环境的经历,其实都值得写一篇博客记录一下,以便于自己以后查阅。‍笔者环境:win10‍过程‍step1:python解释器下载‍由于近期edge不知为何,不进行翻译了,所以就只能啃一啃英文了。(别问我为啥不用截屏翻译,因为有那个闲心,不如我直接......
  • weback5基础配置详解
    <divid="content_views"class="markdown_viewsprism-tomorrow-night"><svgxmlns="http://www.w3.org/2000/svg"style="display:none;"><pathstroke-lineca......
  • 服务器配置记录MSSQL
    安装SQLSERVER的时候报错:无法通过WINDOWS功能控制面板自动安装或卸载WINDOWSSERVER角色和功能。WinServer2012R2安装MSSQL2008R2只需安装.NETFramework3.5/更高版本1.打开“服务器管理器”,选择“添加角色和功能”  2.连续点击“下一步”,直到“功能”选项卡中,勾选......
  • Go 中的监视器模式与配置热更新
    Go中的监视器模式与配置热更新原创 波罗学 码途漫漫 2024-03-1108:03 上海 听全文上篇介绍GO的GUI库Fyne时,提到Fyne的数据绑定用到了监听器模式。本文就展开说下我对Go中监听器模式的理解和应用吧。监听器模式简介监听器模式,或称观察者模式,它主要涉及......
  • Go语言VSCode开发环境配置
    最近学习Golang,先把开发环境配置好。一、安装Go语言开发包https://golang.google.cn/dl/ 按步骤安装即可,安装完成后需要设置Windows环境变量 配置好,做个测试二、VSCodeGolang开发环境配置vscode安装go插件时,由于各种原因,在安装插件时总是失败,所以先执行以下操作:在......
  • VSCode 配置 Spring Boot 项目开发环境
    神器IDEA在升级到2023之后越发卡顿,EDU邮箱也不能用了,照现在这个JDK版本的升级速度,神器不升级也不行,需要开始物色替代品.其它IDE我用得少,VSCode还是比较熟悉的,可以作为备选项.两三年前曾经试过配置Java环境,存在不少问题作罢.最近搜了下相关的文章,感觉VSCode对Ja......
  • Java登陆第三十四天——Node.js安装、npm配置、npm命令
    Nodejs是JS的运行环境,使JS可以运行在服务端,可以夸平台,可以运行在浏览器之外,成为一款全栈编程语言。Node.js安装Nodejs官网,进入......