You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:29:35