如何在INI文件中使用‘#’字符?Python Configparser连接MSSQL密码难题
处理ConfigParser读取含
#的MSSQL密码问题 核心问题原因
ConfigParser默认会将INI文件中行内未被引号包裹的#之后内容当作注释截断,导致密码读取不完整。以下是几种无需修改密码的解决方法:
方法1:用引号包裹INI中的密码
直接在INI文件里给密码加上双引号或单引号,ConfigParser会解析引号内的完整内容(包括#):
[mssql_db] server=127.0.0.1 database=target_db username=admin password="P@ss#Word123"
读取代码:
from configparser import ConfigParser cfg = ConfigParser() cfg.read('db_config.ini') db_password = cfg.get('mssql_db', 'password') # 输出结果:P@ss#Word123(自动去除包裹的引号)
方法2:禁用插值功能初始化ConfigParser
如果不想修改INI文件格式,初始化ConfigParser时指定interpolation=None,即可避免行内#被当作注释截断:
[mssql_db] server=127.0.0.1 database=target_db username=admin password=P@ss#Word123
读取代码:
from configparser import ConfigParser # 禁用插值,保留值中的所有字符 cfg = ConfigParser(interpolation=None) cfg.read('db_config.ini') db_password = cfg.get('mssql_db', 'password') # 输出结果:P@ss#Word123
方法3:使用RawConfigParser(兼容旧Python版本)
针对Python3.2及更早版本,RawConfigParser不会处理值内的特殊字符,直接读取完整内容:
from configparser import RawConfigParser cfg = RawConfigParser() cfg.read('db_config.ini') db_password = cfg.get('mssql_db', 'password')
内容的提问来源于stack exchange,提问作者jhseo
相关产品推荐
相关产品推荐

