我希望模仿大多数命令行工具的行为,其中可选参数可以放置在命令行中的任何位置,包括在位置参数之间,例如这个mkdir
示例:
mkdir before --mode 077 after
在这种情况下,我们知道
--mode
需要恰好1个参数,因此before
和after
都被视为位置参数。可选部分--mode 077
可以放置在命令行的任何位置。然而,使用
argparse
时,以下代码在这个例子中不起作用:# mkdir.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--mode', nargs=1)
parser.add_argument('dirs', nargs='*')
args = parser.parse_args()
运行 ./mkdir.py before --mode 077 after
会得到以下结果:
mkdir.py: error: unrecognized arguments: after
我该如何让argparse
接受一个可选参数(带有固定、已知数量的项目),放在定位参数之间?
getopts
)。 - chepnerargparse
不支持这种风格。 - chepner