如何在有或没有相同选项的参数的情况下解析参数

时间:2015-06-11 06:15:04

标签: python

我想拥有命令行参数选项,其中用户可以/不能为标志提供参数。也可以在没有参数的情况下唤起这个标志。

举个例子。

opts, args = getopt.getopt(argv, "hd:vp:",["help","duration=","verbose","plot="])

但是在optargs中,如果我们在没有任何参数的情况下编写-p,它会给我错误。我想这样我可以在命令行中使用-p-p arg

1 个答案:

答案 0 :(得分:2)

您应该考虑切换到argparse,这会为您提供比命令行参数更强大的功能。您getopt电话的等效配置如下:

parser = argparse.ArgumentParser()
parser.add_argument('--duration', '-d')
parser.add_argument('--verbose', '-v', action='store_true')
parser.add_argument('--plot', '-p', nargs='?', default=None)

args = parser.parse_args()
print(args)

这已经包含完整的帮助文本,verbose是一个标志,将长和短选项映射到同一个字段,以及指定plot或回退到默认值的功能。