是否可以使用 argparse 来捕获任意一组可选参数? [英] Is it possible to use argparse to capture an arbitrary set of optional arguments?
本文介绍了是否可以使用 argparse 来捕获任意一组可选参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以使用 argparse
来捕获任意一组可选参数?
Is it possible to use argparse
to capture an arbitrary set of optional arguments?
例如,以下两项都应被接受为输入:
For example both the following should be accepted as inputs:
python script.py required_arg1 --var1 value1 --var2 value2 --var3 value3
python script.py required_arg1 --varA valueA --var2 value2 --varB valueB
先验我不知道会指定接收哪些可选参数,但会相应地处理它们.
a priori I don't know what optional arguments would be specified receive but would handle them accordingly.
推荐答案
这是一种黑客的方式,但效果很好:
This is kind of a hackish way, but it works well:
检查,哪些参数没有添加并添加
Check, which arguments are not added and add them
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("foo")
parser.add_argument("-bar", type=int)
# parser can have any arguments, whatever you want!
parsed, unknown = parser.parse_known_args() # this is an 'internal' method
# which returns 'parsed', the same as what parse_args() would return
# and 'unknown', the remainder of that
# the difference to parse_args() is that it does not exit when it finds redundant arguments
for arg in unknown:
if arg.startswith(("-", "--")):
# you can pass any arguments to add_argument
parser.add_argument(arg.split('=')[0], type=<your type>, ...)
args = parser.parse_args()
例如:
python3 arbitrary_parser.py ha -bar 12 -extra1 value1 -extra2 value2
那么结果就是
args = Namespace(bar=12, foo='ha', extra1='value1' extra2='value2')
这篇关于是否可以使用 argparse 来捕获任意一组可选参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文