【问题标题】:Python argaprse optional arguments handlingPython argparse 可选参数处理
【发布时间】:2017-01-14 01:04:55
【问题描述】:

所以,我有一个用于解析和绘制来自文本文件的数据的 python 脚本。参数处理是使用 argparse 模块完成的。问题是,有些参数是可选的,例如其中之一用于在绘图上添加文本注释。此参数通过 **kwargs 发送到绘图函数。我的问题是 - 处理这些可选参数的最 Pythonic 方式是什么?这里有一些伪代码:

parser = argparse.ArgumentParser()
...
parser.add_argument("-o", "--options", nargs="+", help="additional options")
args = parser.parse_args()
...
def some_function(arguments, **kwargs):
   doing something with kwargs['options']
   return something
...
arguments = ...
some_function(arguments, options=args.options)

如果默认情况下未指定选项,则分配无值。它会导致一些问题。什么是更 Pythonic - 以某种方式检查 some_function 中的“选项”?或者在调用 some_function 之前解析参数?

【问题讨论】:

  • 还有其他关于将argparse 参数转换为kwargs 或接受可以传递的字典类输入的问题。您的 options 参数只生成一个字符串列表。
  • 在使用argparsekwargs: stackoverflow.com/questions/33712615/…

标签: python command-line-arguments argparse keyword-argument


【解决方案1】:

您可以只提供一个明确的空列表作为默认值。

parser.add_argument("-o", "--options", nargs="+", default=[])

【讨论】:

    【解决方案2】:

    使用get,如果在字典中找不到键,则设置默认值

    def some_function(arguments, **kwargs):
       something = kwargs.get('options', 'Not found')
       return something
    

    或 if 语句

    if 'option' in kwargs:
        pass # do something
    

    【讨论】:

      猜你喜欢
      • 2017-11-28
      • 2019-11-17
      • 2019-07-12
      • 2014-09-09
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 2022-06-11
      相关资源
      最近更新 更多