我现在有以下代码:
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例如?这可能吗?
答案 0 :(得分:1)
尝试 1.在解析之前打印sys.argv 2.在http://docs.python.org/dev/library/argparse.html#parsing-arguments
中明确地在脚本中添加参数所以你可以排除关于argparse实际看到的参数的任何混淆。