我正在编写一个包装器,该包装器将为每个操作数调用一个命令,但是具有相同的选项。例如
wrapper -i foo bar
将包装的命令称为
wrapped -i foo
wrapped -i bar
同样,如果没有操作数,它应该仅使用选项调用包装的命令一次,例如wrapper -h
→wrapped -h
。
该命令采用GNU样式的长选项和短选项,例如-i
和--input
,以及--
表示选项的结束。
我已经考虑过使用argparse
,但是我必须使它知道该命令所采用的所有选项,这将是一个巨大的痛苦。
我该怎么做?
答案 0 :(得分:0)
遍历sys.argv
并将以短划线-
开头的所有参数弹出到另一个列表中,如果该参数为双短划线--
则中断。
args = sys.argv[1:]
options = []
for arg in args[:]:
if arg.startswith('-'):
options.append(args.pop(0))
if arg == '--':
break
然后遍历操作数,在每次调用时将选项传递给命令。尽管如果没有操作数,请仅使用选项进行调用。
for arg in args:
command(options, arg)
if not args:
command(options)
如何定义command
由您决定。