传递时不会解析Python参数

时间:2012-03-02 22:51:42

标签: python argparse

我现在有以下代码:

parser = argparse.ArgumentParser(prog='Tempus')
ex_group = parser.add_mutually_exclusive_group(required=True)

## Miscellaneous but needed args
parser.add_argument('--mode', type=str, choices=['xml', 'text', 'term'], 
                        dest='mode', required=True, help='export mode')
parser.add_argument('-v', '--verbose', action='store_true', 
                       dest='verbose', help='enable verbose/debug mode')

# Input methods
ex_group.add_argument('--i', action='store_true', 
                       dest='interactive', help='enter interactive mode')
ex_group.add_argument('--p', metavar='I', type=float, 
                       dest='integer', help='percentage to use')

args = parser.parse_args()

然而,当我以任何顺序传递所需的参数时,我得到错误:

Tempus: error: argument --mode is required

即使我通过了这个论点,也会发生这种情况。有什么方法可以对此进行排序吗?

谢谢!

编辑:谢谢大家,我得到了它的工作,结果是在没有先传递参数之前没有先指定python exe就执行它。

另一个简单的问题:是否可以在我的代码中创建类似于--mode的参数,但是让其他参数传递给其中一个选项?

例如,有一个诸如--input之类的命令可以接受两个参数'integer'和'interactive',但是我也可以将一个数字传递给--input integer命令?所以命令会显示: - 输入整数23例如?这可能吗?

1 个答案:

答案 0 :(得分:1)

尝试 1.在解析之前打印sys.argv 2.在http://docs.python.org/dev/library/argparse.html#parsing-arguments

中明确地在脚本中添加参数

所以你可以排除关于argparse实际看到的参数的任何混淆。