方法一: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-m
n_vertex = 228
time_intvl = 5
n_his = 12
kt = 3
stblock_num = 2
drop_rate = 0.5
batch_size = 32
learning_rate = 0.001
weight_decay_rate = 0.0005
step_size = 10
gamma = 0.999
data_path = ./data/train/road_traffic/pemsd7-m/vel.csv
wam_path = ./data/train/road_traffic/pemsd7-m/adj_mat.csv
model_save_path = ./model/save/road_traffic/pemsd7-m/
读取
import configparser
config = 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 configparser
config = configparser.ConfigParser()
# set a value of parameters
config.add_section("data1")
config.set("data1", "new_value", "myValue")
# write to file
config.write(open('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini', "w"))
修改
import configparser
config = 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 ConfigObj
config = ConfigObj('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini',encoding='UTF8')
# 读配置文件
print (config['data1'])
print (config['data1']['new_value'])
修改
from configobj import ConfigObj
config = ConfigObj('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini',encoding='UTF8')
config['data1']['new_value'] = "2"
# 写入
config.write()
添加section
from configobj import ConfigObj
config = 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 ConfigObj
config = ConfigObj('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini',encoding='UTF8')
del config['data2']['new_value']
config.write()
直接删除整个块
from configobj import ConfigObj
config = ConfigObj('D:\\谷歌下载\\STGCN\\config\\data\\train\\road_traffic\\pemsd7-m.ini',encoding='UTF8')
del config['data2']
config.write()