Python argparse结合标志和变量

5
我希望能够为我的程序指定一个选项,既是标志又是变量。例如: 我有一个名为“--logging”的参数。如果未指定此参数,则希望将其设置为false(即action='store_true'),但如果指定了该参数,则希望执行两个操作。1)我想设置默认路径为“./log_file.log”,2)我想允许用户指定不同的日志文件位置。
2个回答

8

好的,我想出了自己的解决方案。它依赖于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"将被视为真。

-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来测试和输出代码中的值(将其替换为适合您的内容)。您还可以使用配置文件和/或文件日志路径的参数。


这并不能解决我的问题。我想不仅要将它设置为True/False标志,还要允许它保存默认值或自定义值。我已经在下面解决了自己的问题! - Calcipher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接