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

Python argparse接收带斜杠参数被自动拼接路径如何解决

问题根源

这个路径自动拼接的行为不是argparse模块导致的,根源是你在Windows平台下使用了类Unix终端(比如Git Bash、MSYS2、Cygwin),这类终端默认带自动路径转换机制:会把所有以/开头的参数识别为Unix风格路径,在参数传递给Python进程前就自动转换成对应的Windows绝对路径,argparse只是拿到了转换后的参数而已。


解决方案

根据使用场景可以选择以下任意一种方案处理:

  • 方案1:单次执行时禁用终端路径转换(无需改代码)
    执行脚本前添加环境变量MSYS_NO_PATHCONV=1即可关闭当前命令的路径转换,执行命令改为:
    MSYS_NO_PATHCONV=1 python script.py "/bin/exec 10"
    
    即可拿到/bin/exec 10的原始参数。
  • 方案2:代码侧兼容处理(无需用户修改执行配置)
    约定用户传入以/开头的命令时前缀加两个斜杠//,这类终端遇到双斜杠开头的参数就不会触发路径转换,拿到参数后再做一次还原即可,代码示例:
    import argparse
    
    parser = argparse.ArgumentParser()
    parser.add_argument('execCmd' , type=str)
    args = parser.parse_args()
    
    # 还原双斜杠开头的参数为单斜杠格式
    if args.execCmd.startswith('//'):
        args.execCmd = args.execCmd[1:]
    
    print(args)
    
    此时用户执行命令改为:
    python script.py "//bin/exec 10"
    
    就能得到预期的原始参数。
  • 方案3:更换终端执行
    使用Windows原生的cmd或者PowerShell执行脚本,不会触发路径转换,直接就能拿到原始输入的参数。

内容的提问来源于stack exchange,提问作者Anshul Goyal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:27:04