我希望能够为我的程序指定一个选项,它既可以作为标志也可以作为变量。例如: 我有一个名为“--logging”的论点。如果未指定此参数,我希望将其设置为false(即action ='store_true'),但如果指定了参数,我想做两件事。 1)我想设置默认路径“./log_file.log”和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稍后在代码中测试和输出值(替换为对您有意义的值)。您还可以使用配置文件或/和文件日志路径的参数。