我希望能够为我的程序指定一个既作为标志又作为变量的选项。例如:我有一个名为“--logging”的参数。如果未指定此参数,我希望将其设置为 false(即 action='store_true'),但如果指定了参数,我想做两件事。1)我想设置默认路径“./log_file.log”和 2)我想允许用户指定不同的日志文件位置。
问问题
4763 次
2 回答
6
对,所以我想出了我自己的解决方案。它依赖于nargs。首先是代码:
#!/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='?' 如果未指定标志,将使用“默认”值(在我们的例子中为布尔值 False),如果标志不带参数指定,则使用 const 值,如果标志带参数指定,则使用参数。注意不要在 False 周围加上任何引号;False 是内置类型(布尔值),“False”或“False”将评估为 true。
于 2012-06-21T12:29:52.537 回答
-1
是的,没有问题。您可以使用关于 argparse 的优秀 PyMOTW中解释的这种形式
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 来测试和输出值(将其替换为对您有意义的内容)。您还可以使用配置文件或/和文件日志路径的参数。
于 2012-06-20T18:29:21.330 回答