我正在编写一个包装程序,该程序接受将要传递给另一个程序的参数列表以及一些特定于我的包装程序的选项。为避免有关哪个选项进入何处的困惑,我希望任何非选项参数的出现都禁止将其他参数作为选项处理,就像--
参数出现在它之前一样。换句话说,类似于xterm -e
的行为。
用Python完成此操作的最佳方法是什么?与手动解析命令行相比,我更喜欢使用argparse
的解决方案。
使用argparse.REMAINDER
。
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('argv', nargs=argparse.REMAINDER)
>>> parser.add_argument('--foo', action='store_const', const=True)
>>> print(parser.parse_args(['--foo', 'a', '--foo', 'b']))
Namespace(argv=['a', '--foo', 'b'], foo=True)