Flask项目多脚本复用config.ini配置文件出现索引错误的解决问询
问题解决:Flask中复用ConfigParser配置加载代码
错误原因
你在config.py的loadConfig函数中返回的是configData.read(config_path)的结果,而ConfigParser.read()方法返回的是成功读取的配置文件路径列表,并非ConfigParser实例本身。所以在views.py中configData是一个列表,使用字符串索引['Section']['Key']自然会抛出list indices must be integers or slices, not str错误。
修正方案(推荐模块级复用)
直接在config.py模块级别初始化配置对象,第一次导入时就完成加载,后续所有导入都复用同一个配置实例,更高效:
# config.py import pathlib import configparser # 初始化配置解析器 config = configparser.ConfigParser() # 获取config.ini的绝对路径 config_path = pathlib.Path(__file__).parent.absolute() / "config.ini" # 读取配置文件 config.read(config_path)
在views.py中直接导入这个配置对象即可使用:
# views.py from Project.modules.config import config print(config['Section']['Key'])
保留函数式的修正方式
如果坚持使用函数加载的方式,只需修改loadConfig函数,返回ConfigParser实例而非read方法的结果:
# config.py import pathlib import configparser def loadConfig(): configData = configparser.ConfigParser() config_path = pathlib.Path(__file__).parent.absolute() / "config.ini" configData.read(config_path) return configData # 返回配置解析器对象
调用时:
# views.py from Project.modules import config configData = config.loadConfig() print(configData['Section']['Key'])
内容的提问来源于stack exchange,提问作者Mayot
相关产品推荐
相关产品推荐

