如何从.ini配置文件读取含{和(的CLIENT_SECRET配置值?
解决ini配置文件含(和{字符的读取问题
configparser默认会把{识别为插值语法的开头,导致包含这类字符的配置值读取异常,以下是几种可行的解决办法:
方法1:禁用插值功能
初始化ConfigParser时关闭插值,就能让它把所有内容当作普通字符串处理:
import configparser # 关闭插值功能 config = configparser.ConfigParser(interpolation=None) config.read('configs.ini') # 读取值(无section的配置默认归到DEFAULT下) client_secret = config.get('DEFAULT', 'CLIENT_SECRET') print(client_secret)
方法2:给配置值加引号包裹
在ini文件里把密码用单引号或双引号括起来,避免特殊字符被解析:
修改后的configs.ini:
CLIENT_SECRET = "P^L|Tf5x&9_2TIStIM({IdN^hObZ/-v2{KB(3"
或者用单引号:
CLIENT_SECRET = 'P^L|Tf5x&9_2TIStIM({IdN^hObZ/-v2{KB(3'
然后用你原来的代码就能正常读取:
config = configparser.ConfigParser() config.read('configs.ini') client_secret = config.get('DEFAULT', 'CLIENT_SECRET')
方法3:转义特殊字符(不推荐)
把{替换成{{来转义,不过这种方法需要手动修改密码内容,容易出错:
修改后的configs.ini:
CLIENT_SECRET = P^L|Tf5x&9_2TIStIM({{IdN^hObZ/-v2{{KB(3
内容的提问来源于stack exchange,提问作者Amrmsmb
相关产品推荐
相关产品推荐

