方法一:crudini

crudini命令是Linux下的一个操作配置文件的命令工具

用法

  • crudini --set [--existing] config_file section [param] [value]:修改配置内容
  • crudini --get [--format=sh|ini] config_file [section] [param]:获取配置文件内容
  • crudini --del [--existing] config_file section [param]:删除配置文件内容
  • crudini --merge [--existing] config_file [section]:合并

例子

添加内容

  1. crudini --set test.ini test_section test_param test_value

更新内容

  1. crudini --set [--existing] test.ini test_section test_param test_value

删除内容

  1. crudini --del test.ini test_section test_param

关于这方面内容,主要是Linux系统下使用的。

方法二:ConfigParser模块

ConfigParser 模块为常用的操作ini文件的模块,但是存在一些缺陷,无法识别section的大小写,无法读取文件注释,这样修带有注释的配置文件时就会存在问题。

示例文件test.ini

  1. [data]
  2. dataset = pemsd7-m
  3. n_vertex = 228
  4. time_intvl = 5
  5. n_his = 12
  6. kt = 3
  7. stblock_num = 2
  8. drop_rate = 0.5
  9. batch_size = 32
  10. learning_rate = 0.001
  11. weight_decay_rate = 0.0005
  12. step_size = 10
  13. gamma = 0.999
  14. data_path = ./data/train/road_traffic/pemsd7-m/vel.csv
  15. wam_path = ./data/train/road_traffic/pemsd7-m/adj_mat.csv
  16. model_save_path = ./model/save/road_traffic/pemsd7-m/

读取

  1. import configparser
  2. config = configparser.ConfigParser()
  3. config.readfp(open('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini'))
  4. test_value = config.get("data","batch_size")
  5. print(test_value)

写入

  1. import configparser
  2. config = configparser.ConfigParser()
  3. # set a value of parameters
  4. config.add_section("data1")
  5. config.set("data1", "new_value", "myValue")
  6. # write to file
  7. config.write(open('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini', "w"))

§ python处理.ini配置文件 - 图1

修改

  1. import configparser
  2. config = configparser.ConfigParser()
  3. config.read('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini')
  4. config.set("data1", "new_value", "new_string")
  5. config.write(open('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini', "r+"))

§ python处理.ini配置文件 - 图2

方法三:configobj模块

正常的读配置文件的方法是给ConfigObj一个文件名,然后通过字典来访问成员,子段来获取value值,不会存在注释无法读取的缺陷

读取

  1. from configobj import ConfigObj
  2. config = ConfigObj('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini',encoding='UTF8')
  3. # 读配置文件
  4. print (config['data1'])
  5. print (config['data1']['new_value'])

§ python处理.ini配置文件 - 图3

修改

  1. from configobj import ConfigObj
  2. config = ConfigObj('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini',encoding='UTF8')
  3. config['data1']['new_value'] = "2"
  4. # 写入
  5. config.write()

§ python处理.ini配置文件 - 图4

添加section

  1. from configobj import ConfigObj
  2. config = ConfigObj('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini',encoding='UTF8')
  3. config['data2'] = {}
  4. config['data2']['new_value'] = "2"
  5. # 写入
  6. config.write()

§ python处理.ini配置文件 - 图5

删除

  1. from configobj import ConfigObj
  2. config = ConfigObj('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini',encoding='UTF8')
  3. del config['data2']['new_value']
  4. config.write()

§ python处理.ini配置文件 - 图6

直接删除整个块

  1. from configobj import ConfigObj
  2. config = ConfigObj('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini',encoding='UTF8')
  3. del config['data2']
  4. config.write()

§ python处理.ini配置文件 - 图7