首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在argparse中混合使用位置参数和可选参数

在argparse中混合使用位置参数和可选参数
EN

Stack Overflow用户
提问于 2013-03-23 13:54:54
回答 1查看 2.9K关注 0票数 3

当我混合使用位置参数、可选参数和argparse.REMAINDER时,我在argparse中遇到了一个问题

代码语言:javascript
复制
parser = argparse.ArgumentParser()
parser.add_argument('verbose', action="store")
parser.add_argument('--config', '-c', nargs="?", dest="config_file")
parser.add_argument('--dry-run', action="store_true", dest="dryrun")
parser.add_argument('args', nargs=argparse.REMAINDER, action="store")

示例运行:

代码语言:javascript
复制
python test.py verose="5" --config config.xml graph --dry-run

预期输出:

代码语言:javascript
复制
verbose = "5"
config_file = config.xml
dryrun = True
args = ['graph']

实际输出:

代码语言:javascript
复制
verbose = "5"
config_file = config.xml
dryrun = False
args = ['graph', '--dry-run']

我的要求是将verbose-c--config--dry-run作为命令行选项,并且无论参数在命令行中出现的顺序如何,在命令行中提供的任何其他选项都应该存储在列表args中。我哪里做错了,请帮帮忙。还有其他更好的python命令行解析器吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-23 14:03:23

我想说你需要的配置是:

代码语言:javascript
复制
    parser.add_argument('--verbose', action="store")
    parser.add_argument('-c', '--config', nargs="?", dest="config_file")
    parser.add_argument('--dry-run', action="store_true", dest="dryrun")
    parser.add_argument('args', nargs='*')

我认为您给出的"REMAINDER“参数明确地告诉argparse模块,当它找到第一个不能与其他参数匹配的参数时,它将获取args中的其余参数。

如果需要0个或更多参数作为args,请使用'*‘;如果需要至少1个参数,请使用'+’作为nargs参数。

除此之外,我建议使用argparse documentation,因为有很多可能已经使用所需的类型(例如,整型或文件参数)进行解析。此外,在免费的Aptana Studio中创建一个CLI-argparse模块为已经设置了一些标准参数(如verbose)的argparse提供了一个很好的包装器。在这种情况下,Verbose将是一个整数级别。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15583870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档