Python argparse结合了一个标志和一个变量

时间:2012-06-20 12:50:42

标签: python argparse

我希望能够为我的程序指定一个选项,它既可以作为标志也可以作为变量。例如: 我有一个名为“--logging”的论点。如果未指定此参数,我希望将其设置为false(即action ='store_true'),但如果指定了参数,我想做两件事。 1)我想设置默认路径“./log_file.log”和2)我想允许用户指定不同的日志文件位置。

2 个答案:

答案 0 :(得分:7)

是的,所以我想出了自己的解决方案。它依赖于诽谤。首先是代码:

#!/usr/bin/python
# example.py
import argparse

parser = argparse.ArgumentParser(description="Example of a single flag acting as a boolean and an option.")
parser.add_argument('--foo', nargs='?', const="bar", default=False)
args = parser.parse_args()

if args.foo:
  print args.foo
else:
  print "Using the default, boolean False."

鉴于这个例子,我们在三种可能的情况下使用它时会发生什么:

> ./example.py
  Using the default, boolean False.
> ./example.py --foo
  bar
> ./example.py --foo baz
  baz

希望以上内容非常明显。如果不是,那么会发生什么是nargs ='?'如果未指定标志(在我们的例子中为boolean False),则使用'default'值;如果不带参数指定标志,则使用const值;如果使用参数指定标志,则使用参数。小心不要在False周围加上任何引号; False是内置类型(布尔值),'False'或“False”将评估为true。

答案 1 :(得分:-1)

是的,没有问题。您可以使用优秀的PyMOTW about argparse

中说明的此表单
import argparse    
parser = argparse.ArgumentParser()


parser.add_argument('--logging', action='store_true', default=False,
                    dest='logging_on',
                    help='Activate the logging')

results = parser.parse_args()

您可以使用logging_on稍后在代码中测试和输出值(替换为对您有意义的值)。您还可以使用配置文件或/和文件日志路径的参数。