【问题标题】:argparse optional argumentsargparse 可选参数
【发布时间】:2013-05-21 15:55:59
【问题描述】:

我在 python 中有以下代码:

group = parser.add_mutually_exclusive_group()
group.add_argument('-a', '--add', dest='name_to_add', help='Add a new group or a role to existing group')
group.add_argument('-u', '--upgrade', dest='name_to_upgrade', help='Upgrade a group with the new version')
group.add_argument('-r', '--remove', dest='name_to_remove', help='Remove a group')
group.add_argument('-l', '--list', dest="list_server_or_group_name", help='Get group or server state/configuration')

我的问题是“-l”选项。我希望能够列出特定组并列出所有组。目前我这样做:

"python my_script.py -l group_name" - 用于列出特定组 和 "python my_script.py -l all" - 用于列出所有组。

但我想列出所有组: “python my_script.py -l”。 我应该如何更改我的代码才能以这种方式运行它?以及如何稍后在代码中检查它?

谢谢,Arshavski Alexander。

【问题讨论】:

    标签: python argparse


    【解决方案1】:

    optparse 无法做到这一点。

    但是,如果你从optparse 切换到argparse(因为2.73.2)你可以通过nargs='?'

    '?'。如果可能,将从命令行使用一个参数,并将其作为单个项目生成。如果不存在命令行参数,则将生成默认值。

    group.add_argument('-l', '--list', dest="list_server_or_group_name",
                       help='Get group or server state/configuration',
                       nargs='?', default=None, const='all')
    

    【讨论】:

    • 感谢您的快速响应。出于某种原因,它对我不起作用。添加这个并使用“-l”选项运行后,args.list_server_or_group_name 出于某种原因是 None ,我希望它是“all”
    • @alexarsh -- 尝试添加const 关键字(例如const = 'all')。最有启发性的是,尝试一个简单的程序,在其中添加一个参数:grp.add_argument('-l',nargs='?',default=None,const='foo'),然后遍历不同的选项(使用-l-l foo 和不使用-l 调用)。
    猜你喜欢
    • 2011-05-27
    • 2017-11-28
    • 2019-11-17
    • 2021-01-07
    • 2014-04-15
    • 2019-07-12
    相关资源
    最近更新 更多