文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ini配置文件

2023-08-31 06:36

关注

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 namekeyname1=value1keyname2=value2[Section2] ;section namekeyname3=value3keyname4=value4

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

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

其他说明

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里面对象是元祖

remove

# 删除一个section中的一个item(以键值KEY为标识)conf.remove_option('serialport', "port")      # 参数  section名   key名# 删除整个section这一项conf.remove_section('serialport')

add

# 添加一个sectionconf.add_section("serialport")
# 往section添加key和valueconf.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

read

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

来源地址:https://blog.csdn.net/first_bug/article/details/129693732

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯