是否可以使用argparse捕获任意一组可选参数?
例如,以下两者都应被接受为输入:
python script.py required_arg1 --var1 value1 --var2 value2 --var3 value3
python script.py required_arg1 --varA valueA --var2 value2 --varB valueB
Run Code Online (Sandbox Code Playgroud)
先验我不知道将指定哪些可选参数接收但会相应地处理它们.
MrP*_*P01 34
这是一种hackish方式,但它运作良好:
检查,未添加哪些参数并添加它们
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()
Run Code Online (Sandbox Code Playgroud)
例如:
python arbitrary_parser.py ha -bar 12 -lol huhu -rofl haha
Run Code Online (Sandbox Code Playgroud)
那么结果就是
args = Namespace(bar=12, foo='ha', lol='huhu', rofl='haha')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4215 次 |
| 最近记录: |