ConfigParser读取含空格文件路径时截断问题求助
解决ConfigParser读取带空格路径被截断的问题
这个问题我之前也碰到过,核心原因是你用的configparser.RawConfigParser默认解析行为会把空格当作值的分隔符,导致只读取到空格前的部分。下面给你几个可行的解决方案:
方案1:给配置文件里的路径加上引号
直接修改你的配置文件,把带空格的路径用双引号包裹起来:
[Configuration] mysqldumpexecutable_location = "C:/Program Files (x86)/MySQL/MySQL Server 5.7/bin/"
这样不管用哪个ConfigParser子类,都能正确识别完整路径。如果用RawConfigParser,读取后可能需要手动去掉首尾的引号(比如用mysql_path.strip('"')),但用下面的方案2会更省心。
方案2:改用configparser.ConfigParser替代RawConfigParser
ConfigParser(Python3中就是configparser.ConfigParser)是更常用的子类,它会自动处理带引号的字符串,默认保留值里的空格。修改你的代码如下:
import os import time import datetime import configparser def BackupDB(): try: # 替换成ConfigParser,而不是RawConfigParser config = configparser.ConfigParser() # 补全你的配置文件完整路径,比如configuration.ini config.read(r"etc\configuration.ini") # 现在能拿到完整的带空格路径了 mysql_path = config.get('Configuration', 'mysqldumpexecutable_location') print(mysql_path) except Exception as e: print(f"读取配置出错: {e}")
方案3:保留RawConfigParser但指定raw=False
如果你不想替换ConfigParser类,也可以在调用get()方法时加上raw=False参数,让它处理转义和引号:
mysql_path = config.get('Configuration', 'mysqldumpexecutable_location', raw=False)
不过这个方法不如方案2通用,还是推荐用ConfigParser。
总结一下,最稳妥的方式是给配置值加引号,同时使用ConfigParser,这样能避免大部分解析问题。
内容的提问来源于stack exchange,提问作者Mor Sagmon
相关产品推荐
相关产品推荐

