方法一: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]:合并
例子
添加内容
crudini --set test.ini test_section test_param test_value
更新内容
crudini --set [--existing] test.ini test_section test_param test_value
删除内容
crudini --del test.ini test_section test_param
关于这方面内容,主要是Linux系统下使用的。
方法二:ConfigParser模块
ConfigParser 模块为常用的操作ini文件的模块,但是存在一些缺陷,无法识别section的大小写,无法读取文件注释,这样修带有注释的配置文件时就会存在问题。
示例文件test.ini
[data]dataset = pemsd7-mn_vertex = 228time_intvl = 5n_his = 12kt = 3stblock_num = 2drop_rate = 0.5batch_size = 32learning_rate = 0.001weight_decay_rate = 0.0005step_size = 10gamma = 0.999data_path = ./data/train/road_traffic/pemsd7-m/vel.csvwam_path = ./data/train/road_traffic/pemsd7-m/adj_mat.csvmodel_save_path = ./model/save/road_traffic/pemsd7-m/
读取
import configparserconfig = configparser.ConfigParser()config.readfp(open('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini'))test_value = config.get("data","batch_size")print(test_value)
写入
import configparserconfig = configparser.ConfigParser()# set a value of parametersconfig.add_section("data1")config.set("data1", "new_value", "myValue")# write to fileconfig.write(open('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini', "w"))

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

方法三:configobj模块
正常的读配置文件的方法是给ConfigObj一个文件名,然后通过字典来访问成员,子段来获取value值,不会存在注释无法读取的缺陷
读取
from configobj import ConfigObjconfig = ConfigObj('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini',encoding='UTF8')# 读配置文件print (config['data1'])print (config['data1']['new_value'])

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

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

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

直接删除整个块
from configobj import ConfigObjconfig = ConfigObj('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini',encoding='UTF8')del config['data2']config.write()

