ini配置文件

INI 格式配置文件基础知识 INI是英文“初始化”(initialization)的缩写,它是某些平台或软件上的配置文件的非正式标准,以节(section)和键(key)构成,常用于微软Windows操作系统中,这种配置文件的文件扩展名多为INI。INI文件被用来对操作系统或特定程序初始化或进行参数设置。现在已成为许多配置的非正式标准,其它操作系统可能使用 .conf 或 .cfg 作为后缀。本文章包含INI 格式配置文件内容、结构和语法等内容。 阅读详情
AI摘要

ini文件是Windows系统的初始化文件,包含参数、节和注解。Python的ConfigParser模块用于读写ini文件,支持添加、删除和修改section及key-value对。C语言通过GetPrivateProfileString和GetPrivateProfileInt函数读写ini文件。

ini配置文件

ini文件是initialization file的缩写,即初始化文件,是widows系统配置文件所采用的存储格式。

文件扩展名: .ini

ini配置文件的后缀名也不一定必须是.ini, 也可以是.cfg, .conf或者是.txt

ini文件格式

ini配置文件由参数, 节, 注解组成

参数(parameter)

以键值对的形式存在

name=value

每个参数都有一个name和一个value,name和value由等号=分隔

节(section)
  1. 所有的键值对都是以节section为单位结合在一起的

  2. 所有的section名称都是独占一行,并且section名字都被方括号包围着[ ]

  3. 在section声明后的所有parameters都属于这个section

  4. 一个section没有明显的结束标识符,一个section的开始就是上一个section的结束

  5. section不能重复,数据通过section去查找,每个seletion下可以有多个key和value的键值对

[section]
注解

comments使用分号表示, 在分号后面的文字,直到该行结尾全部为注解。

;comment ini文件的数据格式例子

例子

[Section1] ;section name
keyname1=value1
keyname2=value2

[Section2] ;section name
keyname3=value3
keyname4=value4

section用来表示一个段落,ini文件可能是项目中共用的,使用section段名来区分不同用途的参数区

;串口配置实例
[port]
portname=COM4
port=4

其他说明

  • 在windows系统中,INI文件很多,最重要的是System.ini , System32.ini 和 Win.ini
  • ini文件主要存放用户所作的选择以及系统的各种参数,用户可用通过修改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"
# 获取所有的section
sections = conf.sections()
print(sections)  					# 返回list
items = conf.items('serialport')  	# 参数是 section的名称
print(items)  						# list里面对象是元祖
remove
# 删除一个section中的一个item(以键值KEY为标识)
conf.remove_option('serialport', "port")      # 参数  section名   key名
# 删除整个section这一项
conf.remove_section('serialport')
add
# 添加一个section
conf.add_section("serialport")
# 往section添加key和value
conf.set("serialport", "port", "com4")
write

write写入有两种方式

  1. 删除原文件内容,重新写入

    conf.write(open(cfgpath, "w"))  # 删除原文件重新写入
    
  2. 在原文件基础上继续写入内容,追加模式

    conf.write(open(cfgpath, "a"))  # 追加模式写入
    

remove和set方法并没有真正的修改ini文件内容,只有当执行conf.write()方法的时候,才会修改ini文件内容

写入中文的话,需要加上写入的编码格式:encoding=“utf-8”

# 修改section里面的值
conf.set("week", "day", "星期一")  # 写入中文
conf.write(open(cfgpath, "a", encoding="utf-8"))  # a模式 编码格式
python例子
  1. 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 
    
  2. 解析

    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) 
    

返回的就是 字典类型

ini配置文件(c语言)

详细可以参考: https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getprivateprofileint

write
  • WritePrivateProfileString

    BOOL WritePrivateProfileString(
      [in] LPCSTR lpAppName,
      [in] LPCSTR lpKeyName,
      [in] LPCSTR lpString,
      [in] LPCSTR lpFileName
    );
    
    • lpAppName

      节section名

    • lpKeyName

      键值对的键名,如果为NULL,删除整个节

    • lpString

      键值对的值,如果为NULL,对应的键将被删除

    • lpFileName

      ini文件路径及名称

    • 返回值:成功非0,失败0

read
  • GetPrivateProfileInt

    UINT GetPrivateProfileInt(
      [in] LPCTSTR lpAppName,
      [in] LPCTSTR lpKeyName,
      [in] INT     nDefault,
      [in] LPCTSTR lpFileName
    );
    
    • lpAppName 节名
    • 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
    );
    
    • lpReturnedString 接收返回数组的buf
    • nSize buf的大小
    • 返回复制到lpReturnedString中的字节数
c例子
  1. 读配置文件

    [strings] 
    mode = train 
    
    [ints] 
    dataset_size=50000 
    
    [floats]
    rate=0.5 
    
    #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;
    }
    
  2. 读浮点数

    没有内置读浮点数的函数,需要自己实现一个。

    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;
    }
    

参考

微软手册: https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getprivateprofileint

一文带你入门ini格式 ini文件通常以纯文本形式存在,并且包含了一个或多个节(sections)以及每个节下的键值对(keyvalue pairs)。这些键值对用来指定应用程序的各种设置。比如Linux系统里就有非常多这类格式的文件,如Linux下的打印机服务程序启动配置文件/lib/systemd/system/cups.service:举例:这种.server文件的格式就是ini格式[字段]若干 键值对(key = value)[sesction]name = key[Install] 阅读详情

相关推荐

C# 读写ini配置文件

INI 配置文件如下: 先读取,再修改,再读取 using System; using System.Runtime.InteropServices; using System.Text; namespace ConsoleApp4 { class Program { static void Main(string[] args) { ...

昨夜西风凋碧树,独上高楼,望尽天涯路。 5816

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

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

qq_38473009的博客 4706

INI配置文件的格式

为什么要用INI文件? 如果我们程序没有任何配置文件时,这样的程序对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,这样很不好,所以要用配置文件,让程序出厂后还能根据需要进行必要的配置;配置文件有很多如INI配置文件,XML配置文件,还有就是可以使用系统注册表等。 本文主要是为读者在实现读写INI配置文件模块之前,提供有关INI文件的格式信息。

gateway6143的专栏 1万+

各类配置文件格式简介(ini,yaml,conf,xml...)和nb的Viper

ini文件是一个无固定标准格式的配置文件。它以简单的文字与简单的结构组成,常常使用在Windows操作系统。ini文件的命名来源,是取自英文“初始(Initial)”的首字缩写,正与它的用途——初始化程序相应。可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。XML设计用来传送及携带数据信息,所以也经常用来做配置文件。

General_zy的博客 2万+

INI配置文件

一、INI配置文件介绍          为什么要用INI文件?如果我们程序没有任何配置文件时,这样的程序对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,这样很不好,所以要用配置文件,让程序出厂后还能根据需要进行必要的配置;配置文件有很多如INI配置文件,XML配置文件,还有就是可以使用系统注册表等。           本文主要是为读者在实现读写INI配置文件模块之

xinlanbobo的专栏 2632

【 C++ ini配置文件的格式及读写操作】

C++ 配置文件

胡说八道,欢迎来此交流霸道心得 1038

INI配置文件格式

INI配置文件格式 文章目录INI配置文件格式0x00 INI配置文件简介0x01 文件扩展名0x02 文件格式0x03 演示实例 0x00 INI配置文件简介 配置文件:如果我们的程序没有任何配置文件时,这样的程序对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,根据设计模式中的开闭原则[对扩展开放对修改关闭],我们可以使用配置文件来解决这个问题,把程序中需要改变的参数按...

Erice_s的博客 1539

C# 配置文件(INI Config)

在这个漫天都是XML配置文件飞的年代很难在找我们这些还喜欢用INI/INF/CFG配置文件的人了 有时候真觉得让人感伤XML的性能是无法比拟INI配置文件的 但XML的树形结构直观可析 不过其 实INI配置文件同样可以建立为树形结构本身他便是树形结构 有人可能说INI不安全 那么我请问你 XML又安全在哪里了呢 还不是一个鬼样 XML只能说 using System; using Sys

5556

配置文件 ini

配置文件 ini:简单、轻量的配置需求

Edward2022的博客 1841

Unity下ini配置文件的读取

Unity下ini配置文件文件的读取 一、背景 INI是微软Windows操作系统中的文件扩展名。这些字母表示初始化。INI文件被用来对操作系统或特定程序初始化或进行参数设置。 它的好处有很多,可以记录软件的一些配置信息,方便读取。一个段([]括起来的名称)是一类内容,其中又有很键,一个键一个值(用=分隔),都是什么含义,由软件决定。Windows 提供了几个API函数用来读写INI文件,使用INI文件保存信息非常方便。 二、读取操作 主要使用kernel32.dll动态链接库的两个方法: 在进行文件类的编

qq_41924554的博客 1476

INI是什么意思?INI文件格式是什么【编程

它是一种通用的配置文件格式,用于存储和管理程序的配置信息。通过INI文件,我们可以方便地管理和修改程序的各种配置选项,使程序更加灵活和易于维护。INI文件格式在编程中扮演着重要的角色,用于存储和管理配置信息。INI文件以纯文本形式存储,可以包含各种配置项和值,以及相关的节(section)和注释。插件/扩展配置文件:用于存储插件或扩展的配置信息,如插件的启用状态、扩展的功能选项等。多语言翻译文件:用于存储多语言应用程序的翻译文本,通过不同的节和键值对应不同的语言。二、INI文件的基本结构。

ByteNinja的博客 4058

Python之ini配置文件详解

INI介绍 INI是英文“初始化”(initialization)的缩写,被用来对操作系统或特定程序初始化或进行参数设置。由节(section)、 键(key)、值(value)构成。在windows系统中有很多INI文件,例如“System32.ini”和“Win.ini”,相信大家并不陌生。Python 中操作配置文件的模块为configparser,这个模块可以用来解析与Windows上INI文件结构类似的文件。 关于configparser 在python2中该模块名为Configpars

m0_59485658的博客 1万+

Android加密开发实战:Spongy Castle集成与国密算法应用指南

在移动应用开发中,数据加密是保障用户隐私和信息安全的基石。其原理基于密码学算法,通过对数据进行编码转换,确保即使数据被截获也无法被未授权方解读。这项技术的核心价值在于为敏感信息提供机密性、完整性和身份验证,广泛应用于用户登录、本地存储、网络通信等场景。对于Android开发者而言,系统自带的加密功能有时无法满足需求,特别是涉及国密算法或更丰富算法套件时。本文聚焦于Spongy Castle这一专为Android定制的加密库,它有效解决了与系统内置Bouncy Castle的兼容性问题,并提供了对SM4等国密

weixin_27722377的博客 307

c++之ini配置文件的详细解析

本文对如何使用ini配置文件进行了详细解析。其次详细解析'\0','\n','\r'的使用。

zxy_ZXY123的博客 3955

数字电路实验避坑指南:如何正确搭建主从JK触发器测试电路(附Proteus仿真)

本文详细解析了主从JK触发器的工作原理及实验搭建指南,重点解决了常见的Catching Problem现象,并提供了Proteus仿真优化方案。通过元器件选型、电路连接步骤和常见错误排查,帮助读者正确搭建测试电路,确保数字电路实验的稳定性和可靠性。

weixin_30790841的博客 469

多租户Saas架构设计分析(基础篇)

本篇先给大家介绍一下相关的概念和常见问题。 实践篇链接:https://blog.youkuaiyun.com/haponchang/article/details/104246317 SaaS简介 SaaS是Software-as-a-Service(软件即服务)的简称,“软件即服务”?是不是有点拗口?其实你就理解成为“按需租用别人提供的软件服务”就可以了,它是一种软件交付模式。...

haponchang的博客 1万+

读写ini配置文件(C++)

读写ini配置文件(C++)

NRWHF的博客 9384

YOLO26 改进 | 基于特征蒸馏 | 知识蒸馏 (Response & Feature-based Distillation)

本文系统介绍了YOLO26中的知识蒸馏技术,包含五大核心方法:基于响应的蒸馏(学习分类概率)、基于特征的蒸馏(学习中间层表示)、基于关系的蒸馏(学习特征关联)、通道维度蒸馏(CWD)和前景背景分离蒸馏(FGD)。文章深入解析了每种方法的数学原理与实现细节,并提出动态训练策略,包括一致性匹配和蒸馏权重退火机制。通过教师模型向学生模型传递"暗知识",在保持模型轻量化的同时逼近大模型性能。配套代码支持模块化组合不同蒸馏方法,为YOLO26模型压缩提供了一套完整的解决方案。

weixin_51988935的博客 270

C/C++ ini配置文件的格式及读写操作

概述: 我们可能经常用到配置文件ini文件来获取或者保存参数信息,在VC中涉及的函数有如下四种 *注意:函数中的文件名必须是绝对路径,如果传入相对路径,则默认路径为C:\windows* 读取 1、读取字符串(返回值为string的长度(long型),而从ini文件获得的字符串则保留在目的缓冲器中) DWORD GetPrivateProfileString( LPCTSTR lpAppNam...

残花织梦的博客 9765

【教程4>第2章>第19节】 GMSK解调系统的FPGA开发与matlab对比验证

MSK(Minimum Shift Keying,最小频移键控)和GMSK(Gaussian Minimum Shift Keying,高斯最小频移键控)都是数字调制技术,主要用于无线通信系统中将数字信号转换为模拟信号进行传输。它们都是连续相位移键控(Continuous Phase Shift Keying, CPK)的一种形式,意味着相邻码元之间没有相位跳变的突变,而是连续过渡,这有助于减少信号带宽和降低邻道干扰。GMSK的解调过程与MSK类似,我们这里还是采用和MSK解调一样的1bit解调方法。

FPGA/MATLAB学习教程/源码/项目合作开发 1219

二极管钳位电路、限幅电路和检波电路Multisim电路仿真

本文系统介绍了二极管钳位、限幅和检波三种基础电路的工作原理及Multisim仿真验证。钳位电路通过电容-二极管配合实现波形整体平移,将波峰或波谷固定在指定电压;限幅电路利用二极管导通特性削除信号超出设定阈值的部分;检波电路则通过半波整流和电容滤波从调幅波中提取音频信号。三种电路均通过Multisim仿真验证了理论分析结果,展示了二极管在信号处理中的关键作用。这些基础电路广泛应用于信号调理、电平保护和通信解调等领域。

XU157303764的博客 1118

C/C++ ini配置文件的格式及如何读写ini配置文件

一、ini配置文件的格式 为什么要用INI文件?如果我们程序没有任何配置文件时,这样的程序对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,这样很不好,所以要用配置文件,让程序发布后还能根据需要进行必要的配置;配置文件有很多如INI配置文件,XML配置文件,还有就是可以使用系统注册表等。 本文主要是为读者在实现读写INI配置文件模块之前,提供有关INI文件的格式信息。在早期...

u011555996的博客 2251

CTR-GCN 论文解读

提出了一种信道拓扑优化图卷积,该卷积可以动态有效地对信道拓扑进行建模。共享拓扑是一个参数化的邻接矩阵,作为所有通道的拓扑先验,并提供顶点之间的一般相关性。通过使用特定于通道的相关性细化共享拓扑,CTR-GC 获得了通道拓扑。

一杯水果茶!足矣~ 3087

INI配置文件及Python实现

使用INI配置文件主要是用来灵活配置参数,替换一些手动、重复性的工作,本篇对所涉及的INI知识进行总结,包括:**ini的相对路径和绝对路径、python创建ini文件、ini文件的读写、python实现将表格(csv文件)转为ini文件、python实现将ini文件的值写到csv文件。

weixin_45711202的博客 3990

PC 端微信页面拆分及 JavaFx 使用

一、前言 对于一个知识点的学习过程来说,往往使用自己熟悉的工具或方式才更易于上手。因为所有同类型的知识点在抛出复杂的流程拨云见日后,所能得到的几乎都是同样的设计思想和实现理论。 在 Java 语言桌面版开发中,直至目前共提供了三套 UI 开发方式;Awt、Swing、JavaFx,以及一些扩展组件 SWT 等。在这三套 UI 组件中,JavaFx 是最新也是最为好用的,因为他提供了丰富的功能,以及...

bugstack虫洞栈 3606

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ini配置文件格式及用Python读写ini配置文件

1 ini配置文件介绍 1.1 概念 INI文件格式是某些平台或软件的配置文件,常用于windows操作系统 INI是英文“初始化”(initialization)的缩写。INI文件常被用来对操作系统或特定程序初始化或进行参数配置 1.2 ini文件格式 ini配置文件由三部分构成:节(section),属性(property),注释(comment)。 节(section) 节用方括号括起来,独占一行,在该section到下一个section之间的所有property(key-value)都属于

qq_41670002的博客 2214

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 小数用二进制表示
下一篇: RAM IP核
暴风雨中的白杨
博客等级 码龄6年 1070粉丝 162原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暴风雨中的白杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值