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

Python的argparse如何将位置参数后所有参数均视为位置参数?

解决方案

这个需求可以直接实现,使用argparse内置的REMAINDER常量作为脚本参数的nargs取值即可,无需用户手动输入--分隔。

实现代码

import argparse

parser = argparse.ArgumentParser()
# 定义runner自身的所有可选参数
parser.add_argument("--times", type=int, default=1, help="脚本运行次数")
# 定义位置参数:待运行的脚本路径
parser.add_argument("script", help="The script to run")
# 剩余所有参数全部归为脚本参数,无论是否符合runner可选参数格式
parser.add_argument("script_args", nargs=argparse.REMAINDER, help="Script arguments")

args = parser.parse_args()

效果验证

  • 执行命令 runner --times 3 script.py arg1 arg2
    解析结果:
    args.times = 3,args.script = "script.py",args.script_args = ["arg1", "arg2"]
    符合预期:脚本运行3次,传入arg1、arg2两个参数。

  • 执行命令 runner script.py arg1 arg2 --times 3
    解析结果:
    args.times = 1(默认值),args.script = "script.py",args.script_args = ["arg1", "arg2", "--times", "3"]
    符合预期:脚本运行1次,传入全部4个参数。

特殊场景说明

如果存在脚本文件名本身以-开头的极特殊场景,仍然需要用户手动添加--分隔runner参数和脚本路径,比如runner --times 2 -- --custom-script.py arg1,避免argparse将带-的文件名识别为runner的可选参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:45:10