参考链接:
讲解详细:
https://www.jianshu.com/p/faa166ebab41
https://blog.csdn.net/Mr_Cat123/article/details/108982842
一、定义
1.1 简介
使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是configParser
。
configParser
解析的配置文件的格式比较象ini
的配置文件格式,就是文件中由多个section构成,每个section
下又有多个配置项
1.2 配置文件格式
[db]
db_host = 127.0.0.1
db_port = 69
db_user = root
db_pass = root
host_port = 69
[concurrent]
thread = 10
processor = 20
说明:括号“[ ]”内包含的为section。紧接着section 为类似于key-value 的options 的配置内容。
二、读取文件
2.1 初始化读取器
import configparser
config = configparser.ConfigParser()
2.2在读取器下读入一个文件
config.read("ini", encoding="utf-8")
- 函数
read(filenames, encoding=None)
- 读入名为filenames的文件,读入的方式默认为
encoding=None
,一般可以设置为encoding="utf-8"
- 读取并解析按名称给出的命名配置文件的可迭代性。 也允许使用单个文件名。 不存在的文件将被忽略。 返回成功读取文件的列表。
三、生成.ini
文件
参考链接:
https://blog.csdn.net/qq_43280079/article/details/103939564
- 新建一个
.txt
的空白文件
- 编写
每个模块叫一个section,名字用中括号 " [] " 括起来
然后每一行写一个option ,每个选项就是一个option。直接写名字,后面加 " = " 再加上它的值就行
可以在配置文件中加入注释 ,但是注释必须是单独的一行,且以 “#” 开头。只是每次运行时不会读入注释,只要运行一次,写入文件后,所有的注释都会消失。所以仅仅用于第一次初始化时有用(如果不进行写入,则可以一直在) - 改为
.ini
文件
建立ini文件的具体方法:
文件夹选项 - 查看 - 去掉“隐藏已知文件的扩展名”前面的√。这样一来,你建立的那个记事本的扩展名就显示出来了“*.txt”。然后,你把这个.txt扩展名更改为.ini就可以了
.ini
的内容
四、变量的修改
- 创建类,读入文件并查看section
out:[‘regular’, ‘option’]
- 取出对应的值
#1.get方法
print(config.get("section1","option2"))
#2.另一种读取方法
print(config["section2"]["password"])
- 在
.ini
文件中修改变量
修改某个option的值,如果不存在则会出现创建
config.set("option","BUDGET",'800')
config.write(open("../config/HRA.ini", "w"))
看图


五、文件的查看
import configparser
config = configparser.ConfigParser()
config.read("./configurations/PEMS08_astgcn.conf")
- 查看sections
config.sections()
out:['Data', 'Training']
- 查看sections中的变量
config.options("Data")
out:['adj_filename', 'graph_signal_matrix_filename', 'num_of_vertices', 'points_per_hour', 'num_for_predict', 'len_input', 'dataset_name']
六、变量读取
- 默认读取字符型
config.get("Data","len_input")
out : '12'
等价方法:config['Data']['len_input']
- 读取为int型
config.getint("Data","len_input")
out:12
- 读取为float型
config.getfloat("Data","len_input")
out:12.0
- 读取为布尔型
config.getboolean("Training","in_channels")
out:True
提醒:布尔读取的时候原值只能为0或着1,如果为12的话,则报错。