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, type=<your type>, ...)
args=parser.parse_args()
可能吗?可能,但我不推荐。
argparse
不是解析此类输入的最佳工具,或者相反,从argparse
的角度来看,这是一个糟糕的参数规范。在你想过
usage
行应该是什么样子吗?如何向用户解释这一点?在如何直接从
sys.argv
解析这个工作?看起来你可以收集3件:还有一些关于一般
^{pr2}$key:value
对的SO问题。比如:这可以通过
nargs='*'
和一个将:
(或=
)上的每个输入字符串拆分并按key
存储内容的操作来处理。在您的需求最不适合
argparse
使用,因为它需要绕过用argv
中的字符串匹配参数标志的整个思想。它需要关闭所有正常的argparse
解析。在看来我几年前也提过同样的建议
Parse non-pre-defined argument
或者更早
Using argparse to parse arguments of form "arg= val"
这是一种老套的方法,但效果很好:
检查,哪些参数未添加并添加它们
例如:
^{pr2}$结果就是
相关问题 更多 >
编程相关推荐