我希望使用python-argparse来处理参数和位置参数。比如说,我有一个在命令行上运行的脚本(只是一个简单的例子),这是目前我的代码:
#!/usr/bin/env python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--verbose', action='store_true')
subparsers = parser.add_subparsers(help='command', dest='command')
cmd1_parser = subparsers.add_parser('command1')
cmd1_parser.add_argument('--verbose', action='store_true')
args = parser.parse_args()
print args
现在我这样调用脚本:
~ $ myscript --verbose command1 --verbose
Namespace(command='command1', verbose=True)
~ $ myscript command1 --verbose
Namespace(command='command1', verbose=True)
~ $ myscript --verbose command1
Namespace(command='command1', verbose=True)
现在你可以看到,我总是得到相同的命名空间对象,并且无法区分详细命令是常规参数还是子解析器参数。但我需要将这些参数分别处理。有没有一种简单的方法(代码最少)来做到这一点?
编辑: 我在Python stdlib问题跟踪器中提交了一个问题:http://bugs.python.org/issue15327
add_subparsers
中的dest关键字实际上会起作用。(它似乎没有在任何地方记录) - mgilson