ini配置文件
创始人
2025-05-31 23:27:32
0

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 
    #include 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

相关内容

热门资讯

最新或2023(历届)平安夜活... 一 活动主题:欢乐的圣诞拉近你我的距离,温馨的苹果传递浓浓的情意。为贫困学生贡献一份力量,更为你的朋...
最新或2023(历届)圣诞节平...  平安夜是几月几日?平安夜,即圣诞前夕(12月24日),在大部份基督教社会是圣诞节庆祝节日之一,但现...
最新或2023(历届)学校班级...  一、活动主题  浓情“苹”安夜,温暖你我心  二、活动背景  最新或2023(历届)已经将近尾声,...
最新或2023(历届)平安夜活...   一、主题和效果:  愿快乐永远跟随着您!  (May happiness follow wher...
最新或2023(历届)平安夜活...   一、活动主题  浓情“苹”安夜,温暖你我心  二、活动背景  最新或2023(历届)已经将近尾声...
婚礼父亲祝酒词 婚礼父亲祝酒词... 婚礼父亲祝酒词女儿婚礼父亲祝酒词各位来宾:大家好。凤凰麒麟在效薮;珊瑚玉树交枝柯。今天,是我女儿和X...
七十寿辰宴祝酒辞 七十寿辰宴祝... ◆七十寿辰宴祝酒辞尊敬的外公、外婆,各位长辈,各位来宾:大家好!今天是我敬爱的外公七十大寿的好日子。...
元旦放假通知最新或2023(历...  最新或2023(历届)1月1日至1月3日,放假3天。  最新或2023(历届)1月1日(星期五)为...
儿子婚礼祝酒词 儿子婚礼祝酒词... 儿子婚礼祝酒词各位来宾、各位女士、各位先生:  今天是我儿子(女儿)与XXX小姐(先生)禧结良缘的大...
八十岁寿辰宴祝酒辞 八十岁寿辰... ◆八十岁寿辰宴祝酒辞尊敬的各位来宾、各位亲朋好友:春秋迭易,岁月轮回,我们欢聚在这里,为XXX先生的...
刀郎祝酒歌歌词 刀郎祝酒歌歌词... 刀郎祝酒歌歌词[00:22.14]美酒飘香啊歌声飞[00:33.81]朋友啊请你干一杯 请你干一杯[...
宴请朋友祝酒词 宴请朋友祝酒词... 宴请朋友祝酒词相聚都是知心友,我先喝俩舒心酒。 路见不平一声吼,你不喝酒谁喝酒?---令打酒官司的人...
乔迁家宴祝酒辞 乔迁家宴祝酒辞... 乔迁家宴祝酒辞乔迁家宴祝酒辞 女士们、先生们: 晚上好! 首先,我要代表我的家人,对各位的光临表示由...
朋友祝酒词范文 朋友祝酒词范文... 朋友祝酒词范文 ●祝酒词的概念 @祝酒词,即在酒会、宴会上的祝贺词 。 @酒本身不...
幽默劝酒词大全 幽默劝酒词大全... 幽默劝酒词大全 劝酒者起身敬酒,被劝者会说:“屁股一抬,喝了重来”,意让劝酒者再喝一个,此时劝酒者...
喝酒与劝酒的礼仪 喝酒与劝酒的... 喝酒与劝酒的礼仪规矩一,酒桌上虽然“感情深,一口闷;感情浅,舔一舔”但是喝酒的时候决不能把这句话挂在...
祝酒歌二首 祝酒歌二首 祝酒歌... 祝酒歌二首 祝酒歌(之一) 薄酒一杯端在手,感...
郭小川祝酒歌文字版 郭小川祝酒... 郭小川祝酒歌文字版祝酒歌--林区三唱之一三伏天下雨哟,雷对雷,朱仙镇交战哟,锤对锤;今儿晚上哟,咱们...
拒酒词经典篇 拒酒词经典篇 拒... 拒酒词经典篇一、只要感情好,能喝多少,喝多少。你可以展开说:“九千九百九十朵玫瑰也难成全一个爱情。只...
会议祝酒词 会议祝酒词 半年度... 各位领导、各位代表、各位来宾: 寒梅绽异香,瑞雪迎佳宾!一年之冬,万物安然,季节孕育着新的...