【问题标题】:add_argument with variables does not work in python 3.4.2 argparse带变量的 add_argument 在 python 3.4.2 argparse 中不起作用
【发布时间】:2015-11-22 08:52:25
【问题描述】:

这是用户故事。

  1. 构建论点。独立。

    parser.add_argument('-design_engineer', '-de');
    
    $test.py -design_engineer sbir
    Namespace(design_engineer, _de='sbir')
    
  2. 使用变量构建参数。

    column_name = 'design_engineer';
    alias_n = 'de';
    parser.add_argument("-" + column_name + ", " + "-" + alias_n);
    
    $test.py -design_engineer sbir
    Namespace(design_engineer, _de='sbir')
    

【问题讨论】:

  • 请尝试修正您的问题的格式。它看起来不像您可能想要的那样,因此很难阅读。另外,你的问题到底是什么?你已经发表了一些声明,但没有提出任何问题。
  • 逗号不是字符串的一部分..
  • Namespace(design_engineer, _de='sbir') 看起来属性名称是'design_engineer,_de',整个字符串。通常,短选项标志类似于“-d”,而长选项标志类似于“--design-engineer”,结果dest 为“design_engineer”。您也可以尝试显式的 dest='design_enginerr' 参数。
  • parser.add_argument('-design_engineer', '-de'); $test.py -design_engineer sbir 命名空间(design_engineer='sbir')
  • parser.add_argument('-design_engineer', '-de');命名空间(design_engineer,_de='sbir')

标签: python argparse


【解决方案1】:

您不需要将逗号放入字符串中;您仍然需要生成两个单独的字符串:

parser.add_argument("-" + column_name, "-" + alias_n)

【讨论】:

  • column_name = 'design_engineer'; alias_n = 'de'; arg_var = "-" + column_name,; arg_var = arg_var + "-" + alias_n,;错误:raceback(最近一次调用最后一次):文件“./tssupdate.py”,第 208 行,在 arg_var = (arg_var + "-" + alias_n,); TypeError:只能将元组(不是“str”)连接到元组
  • 实际上我是从变量动态构建参数。
  • 您的值中有逗号,使它们成为元组。此外,Python 不需要所有这些分号,您可以删除它们。
  • argv_var = "-" + column_name, "-" + alias_n parser.add_argument(argv_var);删除逗号将起作用。但是命名空间打印错误。最后,我的要求是我正在从 xml 文件中读取参数选项。我将根据条件构建一个字符串并将其添加到 add_argument。请帮我解决这个问题。
  • 这听起来像是一个新问题。创建另一个帖子并明确您的尝试,并附上minimal reproducible example 以便我们为您提供帮助。
猜你喜欢
  • 2015-02-10
  • 2011-09-30
  • 1970-01-01
  • 2014-12-27
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
相关资源
最近更新 更多