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

如何在向argparse传递字符串参数时转义开头的连字符?

解决argparse接收以连字符开头的选项值问题

方法1:使用--作为参数分隔符

这是POSIX规范定义的标准用法,--会明确告知命令行解析器:后续所有内容均为普通参数或选项值,不再解析为新的命令行标志。

用法示例:

# 传递--开头的值
prog.py -a -- --fizz

# 传递-开头的值
prog.py -a -- -fizz

该方法在bash、zsh等主流shell中均能正常工作,具备极佳的可移植性。

方法2:用等号直接连接选项与值

在选项和目标值之间使用=连接,argparse会直接将等号后的内容完整解析为选项值,不会将其识别为新的命令行标志。

用法示例:

# 短选项写法
prog.py -a=--fizz

# 长选项写法
prog.py --arguments=--fizz

此方法同样跨shell兼容,无需依赖特殊shell语法。

关于引号方法失效的原因

你尝试的引号写法中,zsh会先解析引号并将--fizz作为参数传递给Python,但argparse检测到字符串以--开头时,仍会尝试将其解析为新的命令行选项,因此报错。上述两种方法是从argparse的解析逻辑层面解决问题,而非仅依赖shell的引号转义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:25:04