如何在包装脚本中拆分操作数,但将选项保持在一起?

时间:2019-07-19 23:05:05

标签: python python-3.x arguments

我正在编写一个包装器,该包装器将为每个操作数调用一个命令,但是具有相同的选项。例如

wrapper -i foo bar

将包装的命令称为

wrapped -i foo
wrapped -i bar

同样,如果没有操作数,它应该仅使用选项调用包装的命令一次,例如wrapper -hwrapped -h

该命令采用GNU样式的长选项和短选项,例如-i--input,以及--表示选项的结束。

我已经考虑过使用argparse,但是我必须使它知道该命令所采用的所有选项,这将是一个巨大的痛苦。

我该怎么做?

1 个答案:

答案 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由您决定。