Python Argparse:格式化参数
我想以各种方式传递参数,如:Python Argparse:格式化参数,python,argparse,Python,Argparse,我想以各种方式传递参数,如: python abc.py 1 2 python abc.py -d 3 python abc.py -c 6 我已经试过了,但我可以用 python abc.py def 1 2 python abc.py spec -d 3 python abc.py spec -c 6 这可能吗?在argparse.add_argument中,您可以提供参数文本,而不是作为字符串,而是作为字符串列表,因此具有相同参数的多种形式。 仔细浏览-此模块可以完成您需要的所有操作
python abc.py 1 2
python abc.py -d 3
python abc.py -c 6
我已经试过了,但我可以用
python abc.py def 1 2
python abc.py spec -d 3
python abc.py spec -c 6
这可能吗?在
argparse.add_argument
中,您可以提供参数文本,而不是作为字符串,而是作为字符串列表,因此具有相同参数的多种形式。
仔细浏览-此模块可以完成您需要的所有操作 一个解析器有两个
选项类型int
,和一个位置类型nargs='*'
,将接受您的3个输入。您对输入有更多的限制吗?我认为您的情况不需要subparser。像这样的事情应该可以:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-d', type=int, nargs='?')
parser.add_argument('-c', type=int, nargs='?')
parser.add_argument('args', type=int, nargs='*')
print(parser.parse_args())
其结果是:
$python3 test_argparse.py 1 2
Namespace(args=[1, 2], c=None, d=None)
$python3 test_argparse.py -d 3
Namespace(args=[], c=None, d=3)
$python3 test_argparse.py -c 6
Namespace(args=[], c=6, d=None)
如果希望选项互斥,则argparse提供了一个。不幸的是,位置总是被认为是必需的,因此,如果您不希望用户在指定给定选项时使用位置,则必须手动检查位置(但是我相信在这种情况下,您的命令界面不好)。问题太广泛了。你能举个具体的例子吗?例如,您希望如何使用这些命令行参数?对于这个简单的规范,默认的nargs
就足够了。