在我看到的例子中,argparse只处理一个位置命令行参数,以及任意数量的可选命令行参数。所以我想知道它是否可以处理多个位置参数?如果是,它是如何做的以及如何指定命令行参数?感谢。
答案 0 :(得分:2)
所以我想知道它是否可以处理多个位置参数?如果是,它是如何做的以及如何指定命令行参数?
好吧,argparse documentation中的第一个示例处理多个非选项参数。所以这可能是一个很好的起点。
这是一个微不足道的例子;将以下内容放在argtest.py
:
import argparse
def parse_args():
p = argparse.ArgumentParser()
p.add_argument('--option1', '-1')
p.add_argument('--option2', '-2')
p.add_argument('commandline1')
p.add_argument('commandline2')
return p.parse_args()
if __name__ == '__main__':
p = parse_args()
print p
然后:
python argtest.py
usage: argtest.py [-h] [--option1 OPTION1] [--option2 OPTION2]
commandline1 commandline2
argtest.py: error: too few arguments
或者:
python argtest.py hello world
Namespace(commandline1='hello', commandline2='world', option1=None, option2=None)
答案 1 :(得分:1)
parser = argparse.ArgumentParser(description="my_example")
# these are your positional arguments
parser.add_argument("first", type=int, nargs=1)
parser.add_argument("second", type=str, nargs=1)
# this is your optional one
parser.add_argument("-r", this is an optional argument)
args = parser.parse_args()
parser.print_help()
print args.first args.second
在命令行上
$ python argtest1.py 5 'c' -r R
输出:
usage: argtest1.py [-h] [-r R] first second
my_example
positional arguments:
first
second
optional arguments:
-h, --help show this help message and exit
-r R this is an optional argument
[5] ['c']
请注意,您可以将位置参数放在命令行上的可选位置之后:python argtest1.py -r R 5 'c'
。你也可以这样做:python argtest1.py 5 -r R 'c'
。显然你不能这样做python argtest1.py -r R 'c' 5
。