python带*的参数_python argparse-带选项的可选追加参数

您可以测试用户是提供操作(在这种情况下,将其作为必需的position参数进行分析),还是不提供操作(在这种情况下,将其作为默认的可选参数进行分析):import argparse

import sys

acts = ['clear', 'copy', 'dump', 'lock']

p = argparse.ArgumentParser()

if sys.argv[1:]:

p.add_argument('action', nargs = '*', choices = acts)

else:

p.add_argument('--action', default = ['dump', 'clear'])

args = p.parse_args()

print(args)

运行时,将生成以下结果:% test.py

Namespace(action=['dump', 'clear'])

% test.py lock

Namespace(action=['lock'])

% test.py lock dump

Namespace(action=['lock', 'dump'])

您可能还有其他的解析选项。在这种情况下,可以使用parse_known_args解析其他选项,然后在第二次传递中处理unknown参数:import argparse

acts = ['clear', 'copy', 'dump', 'lock']

p = argparse.ArgumentParser()

p.add_argument('--foo')

args, unknown = p.parse_known_args()

if unknown:

p.add_argument('action', nargs = '*', choices = acts)

else:

p.add_argument('--action', default = ['dump', 'clear'])

p.parse_args(unknown, namespace = args)

print(args)

运行时,将生成以下结果:% test.py

Namespace(action=['dump', 'clear'], foo=None)

% test.py --foo bar

Namespace(action=['dump', 'clear'], foo='bar')

% test.py lock dump

Namespace(action=['lock', 'dump'], foo=None)

% test.py lock dump --foo bar

Namespace(action=['lock', 'dump'], foo='bar')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值