Argparse使用带有值的可选参数和位置参数

时间:2015-08-14 12:11:03

标签: python argparse

在我的脚本中,为简单起见,我有三个参数:

parser.add_argument("-c", "--compile")
parser.add_argument("--verbose", 
                    help = "stores compilation results in specified log file as they come (default name: %(const)s)", 
                    nargs = '?', 
                    const = DEFAULT_LOG_FILE_NAME, 
                    metavar = "LOGFILE_NAME")
parser.add_argument("path", nargs = "*")

-c--verbose都是可选的,以及路径,这是一个位置参数。另外,--verbose的参数也是可选的。如果没有提供,

假设我想在一个命令中合并这三个。

我会按如下方式运行:

myscript.py -c --verbose path1 path2 path3

这里的问题是,在这种情况下,脚本会将path1解释为--verbose的参数,除非我使用--verbose=<log_name>。据我所知,没有办法将argparse限制为只允许=语法而不是空格。我不能指望我的用户理解必须使用=,或将--verbose作为最后一个参数之一。

我该如何解决这个问题?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

在这种情况下,你正在重载--verbose做两件事:作为开/关标志,以及作为日志文件选项。请考虑将其分为两个不同的选项:--verbose--log=LOGFILE_NAME