【问题标题】:Python argparse combining a flag and a variablePython argparse 结合了一个标志和一个变量
【发布时间】:2012-06-21 20:40:08
【问题描述】:

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

【问题讨论】:

    标签: python argparse


    【解决方案1】:

    好的,所以我想出了我自己的解决方案。它依赖于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。

    【讨论】:

      【解决方案2】:

      是的,没有问题。你可以使用优秀的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 标志,而且还允许它保存默认值或自定义值。我在下面解决了我自己的问题!
      猜你喜欢
      • 1970-01-01
      • 2018-04-14
      • 2018-05-17
      • 2014-02-12
      • 1970-01-01
      • 2018-04-03
      • 2016-09-27
      • 2014-09-15
      • 1970-01-01
      相关资源
      最近更新 更多