ini配置文件

这篇具有很好参考价值的文章主要介绍了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文章来源地址https://www.toymoban.com/news/detail-439166.html

到了这里,关于ini配置文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (简单成功版本)Mysql配置my.ini文件

    目录 一、背景 二、删除原有的mysql服务 三、初始化mysql 四、自行添加my.ini文件 五、新建mysql服务 六、启动mysql服务 七、设置数据库密码 7.1 登录mysql数据库  7.2 修改root用户密码 八、配置my.ini问题    我在两台电脑上安装了MySQL Server 8.0,准备继续做 数据库主从复制配置 ,这

    2023年04月08日
    浏览(39)
  • pytest pytest.ini 配置日志输出至文件

     创建pytest.ini 文件       

    2024年02月10日
    浏览(40)
  • pip使用、pip.ini文件配置、镜像源更换

    查看当前python环境中安装的所有包以及版本 分为pip查看和conda查看 pip: pip freeze conda: conda list pip详细命令使用 pip包更新升级 pip安装其他包 因为我这里已经将 pip.ini 文件中的配置设置为了豆瓣源(下载很快), 所以不用再后面再加 -i 某某源地址 , 这种方式是 临时使用某镜像源

    2024年02月10日
    浏览(43)
  • Pytest教程__配置文件-pytest.ini(4)

    pytest配置文件可以 改变pytest的默认运行方式 ,它是一个固定的文件名称pytest.ini。 存放路径为项目的根目录 在讲解配置文件的可用参数前,我们先解决一个高概率会遇到的问题, 那就是在pytest.ini文件 中不能使用任何中文符号,否则会报错: UnicodeDecodeError: \\\'gbk\\\' codec can\\\'t d

    2024年02月08日
    浏览(37)
  • go读取yaml,json,ini等配置文件

    实际项目中,要读取一些json等配置文件。今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的。 JSON 应该比较熟悉,它是一种轻量级的数据交换格式。层次结构简洁清晰 ,易于阅读和编写,同时也易于机器解析和生成。 1.创建 conf.json: 2.新建config_json.go: 启动运行后

    2024年02月10日
    浏览(49)
  • Pytest系列(14)- 配置文件pytest.ini的详细使用

    pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行 pytest里面有些文件是非test文件 pytest.ini:pytest的主配置文件,可以改变pytest的默认行为 conftest.py:测试用例的一些fixture配置 _ init _.py:识别该文件夹为python的pac

    2024年01月21日
    浏览(80)
  • pytest自动化框架运行全局配置文件pytest.ini

    还记得在之前的篇章中有讲到Pytest是目前主要流行的自动化框架之一,他有基础的脚本编码规则以及两种运行方式。 pytest的基础编码规则是可以进行修改,这就是今日文章重点。 看到这大家心中是否提出了两个问题:pytest的基础编码规则在哪可以修改?又是如何修改? 让我

    2024年02月09日
    浏览(57)
  • python使用单例模式加载config.ini配置文件

    在Python中,可以使用单例模式来加载和管理配置文件。下面是一个示例代码: 在上面的示例中, ConfigLoader 是一个单例类,通过 get_instance 方法获取实例。在实例化的过程中,会读取并解析 config.ini 配置文件。通过 get_value 方法可以根据指定的节和键来获取配置值。使用时,只

    2024年01月24日
    浏览(40)
  • MySQL数据库——MySQL配置文件(my.ini)详解

    my.ini 是 MySQL 数据库中使用的配置文件,MySQL 服务器启动时会读取这个配置文件,我们可以通过修改这个文件,达到更新配置的目的。 这里以 Windows 系统下的 my.ini 配置文件为样板,讲解 MySQL 配置文件中的参数。 一般情况下,my.ini 在 MySql 安装的根目录下,也有可能在隐藏文

    2023年04月09日
    浏览(43)
  • 常见的配置文件格式:yaml,json,xml,ini,csv等

                     目录                 1、配置文件的作用         2、什么是硬编码?         3、常见的配置文件格式 欢迎关注公众号:天天说编程 你的关注是我最大的动力!         1、配置文件的作用         为什么需要配置文件:         主要作

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包