2024-09-24 22:22:23 发布
网友
我想使用argparse获得额外的参数,但不知道它们是什么。 例如,在maven中,我们可以以以下形式添加参数: -Dmaven.test.skip=true或{}
argparse
maven
-Dmaven.test.skip=true
我希望在python中使用argparse得到相同的结果,并得到一些带有所有参数的{}。。在
我知道我可以使用:
aparser.parse_known_args()
但是我需要解析额外的参数(删除-D并按=拆分)。想知道有没有现成的东西?在
-D
=
谢谢!在
你可以用
parser.add_argument('-D', action='append', default=[])
这会引起争论
进入
>>> args.D ['foo', 'bar=baz']
并且没有-D参数将意味着args.D将返回一个空列表。在
args.D
如果要将它们作为字典,可以使用自定义操作:
def ensure_value(namespace, dest, default): stored = getattr(namespace, dest, None) if stored is None: return value return stored class store_dict(argparse.Action): def __call__(self, parser, namespace, values, option_string=None): vals = dict(ensure_value(namespace, self.dest, {})) k, _, v = values.partition('=') vals[k] = v setattr(namespace, self.dest, vals) parser.add_argument('-D', default={}, action=store_dict)
给定-Dfoo -Dbar=baz将导致
-Dfoo -Dbar=baz
>>> args.D {'bar': 'baz', 'foo': ''}
这比使用
>>> as_dict = dict(i.partition('=')[::2] for i in args.D)
你可以用
这会引起争论
^{pr2}$进入
并且没有
-D
参数将意味着args.D
将返回一个空列表。在如果要将它们作为字典,可以使用自定义操作:
给定
-Dfoo -Dbar=baz
将导致这比使用
相关问题 更多 >
编程相关推荐