【问题标题】:saving arguments with ArgumentParser in a dictionary使用 ArgumentParser 将参数保存在字典中
【发布时间】:2021-01-30 05:04:34
【问题描述】:

我从命令行获取不同的参数:

def get_args():
    parser = ArgumentParser(description='neural network project')
    parser.add_argument('--epochs', type=int, default=150)
    parser.add_argument('--decay_epoch', type=int, default=100)
    parser.add_argument('--batch_size', type=int, default=1)
    parser.add_argument('--lr', type=float, default=.0002)
    parser.add_argument('--load_height', type=int, default=286)
    parser.add_argument('--load_width', type=int, default=286)
    args = parser.parse_args()
    return args

我想将从 get_args 获得的所有参数保存在字典中(然后保存在文件 .json 或 .txt 中)。

【问题讨论】:

    标签: python dictionary argparse


    【解决方案1】:

    argparse.ArgumentParser.parse_args 返回一个argparse.Namespace 对象,这很容易变成一个字典。直接来自documentation

    这个类故意简单,只是一个对象子类 可读的字符串表示。如果您更喜欢类似 dict 的视图 属性中,你可以使用标准的 Python 习语 vars():

    >>> parser = argparse.ArgumentParser()
    >>> parser.add_argument('--foo')
    >>> args = parser.parse_args(['--foo', 'BAR'])
    >>> vars(args)
    {'foo': 'BAR'}
    

    【讨论】:

      【解决方案2】:

      创建字典并通过解析器关键字添加它们。

      neural_dict = {}
      neural_dict['EPOCHS'] = args.epochs
      neural_dict['DECAY_EPOCH'] = args.decay_epoch
      .
      .
      .
      

      使用 for 循环添加到字典:

      neural_dict = {}
      parser = argparse.ArgumentParser(description='neural network project')
      parser.add_argument('--epochs', type=int, default=150)
      parser.add_argument('--decay_epoch', type=int, default=100)
      parser.add_argument('--batch_size', type=int, default=1)
      parser.add_argument('--lr', type=float, default=.0002)
      parser.add_argument('--load_height', type=int, default=286)
      parser.add_argument('--load_width', type=int, default=286)
      args = parser.parse_args()
      
      #chepner is right...use his method instead
      neural_dict = vars(args)
      

      【讨论】:

      • 并且可以用一个周期来做吗?
      • 我编辑了我的答案以显示如何。正如保罗所说,你必须使用 vars() 来使用参数的属性。
      • 你的循环基本上就是neural_dict = var(args)(或neural_dict.update(var(args))
      • 谢谢@chepner!很棒的收获!
      猜你喜欢
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 2018-11-03
      相关资源
      最近更新 更多