python argparse命名位置参数?
Posted
技术标签:
【中文标题】python argparse命名位置参数?【英文标题】:python argparse named positional arguments? 【发布时间】:2016-01-08 03:54:02 【问题描述】:有没有办法让 python 的 argparse.ArgumentParser 像 python 函数处理参数一样处理命令行参数?这样参数就可以不带名字地传递?
【问题讨论】:
【参考方案1】:请参阅documentation 中带有“整数”的示例。不要包含任何连字符,参数将被视为位置参数。
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('first_supplied_argument', help='help')
>>> parser.add_argument('second_supplied_argument', help='help')
>>> args = parser.parse_args(['1', '2'])
Namespace(first_supplied_argument='1', second_supplied_argument='2')
根据评论编辑:
您能否同时提供位置参数和可选参数?我认为您仍然需要提供至少一个位置参数。
parser = argparse.ArgumentParser()
parser.add_argument('--first', help='help')
parser.add_argument('first', nargs='?', help='help')
parser.add_argument('--second', help='help')
parser.add_argument('second', nargs='?', help='help')
print parser.parse_args(['1', '2'])
print parser.parse_args(['1', '--second', '2'])
print parser.parse_args(['--first', '1', '--second', '2']) # doesn't work
print parser.parse_args(['', '--first', '1', '--second', '2']) # probably not what you want to do
输出:
Namespace(first='1', second='2')
Namespace(first='1', second='2')
Namespace(first=None, second=None) # doesn't work
Namespace(first='1', second='2')
【讨论】:
我想保留使用名称的选项。我想复制我从 python 函数中获得的功能。 你能提供位置参数和可选参数吗? 表面上这将是相似的,但并不完全相同。您将能够以任何一种方式提供值。但是,两者都没有给出,或者两者都使用时的行为可能会有所不同。以上是关于python argparse命名位置参数?的主要内容,如果未能解决你的问题,请参考以下文章
Python入门-5函数:06参数类型-位置参数-默认值参数-命名参数-可变参数-强制命名参数
如何根据 Python 中的位置参数与 argparse 的组合设置不同的选项?