【问题标题】:Pass arguments from command line as a list and parse it从命令行传递参数作为列表并解析它
【发布时间】:2020-06-21 14:45:34
【问题描述】:

我有以下代码:

import arg
parser = arg.ArgumentParser(description="<%=@project_name%> Command Line.")
parser.add_argument(
        "--inputs", "-i", help="input files.", default="./",
    )
parser.add_argument(
        "--controls", "-c", help="Parms.", default=False
    )
parser.add_argument(
        "--outputs", "-o", help="output files.", default="./"
    )

我只是简单地运行代码

python code.py -i ./ -o ./ 

只是想知道如何将参数列表作为参数传递并在 python 中解析它?比如:

python code.py -i ./ -o ./ -c [False, 5, 'aStr']

【问题讨论】:

  • 不应该import argimport argparse
  • 您可以传递一个逗号分隔的值列表。例如“python code.py a b c d,e,f”然后sys.argv[4].split(",")
  • 看看sys.argv,这样你就明白这些字符串是如何被shell分割的。您可能需要更多报价。解析器从argv 工作。
  • 接受"python code.py -i ./ -o ./ -c False 5 aStr" 怎么样。 '[' 和 ',' 使解析更加困难。

标签: python parameter-passing argparse


【解决方案1】:

在命令行中引用参数:

python code.py -i ./ -o ./ -c "[False, 5, 'aStr']"

然后使用ast.literal_eval()解析它的值。

import ast
...
controls = ast.literal_eval(parser.controls)

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2020-03-21
    • 2021-10-10
    相关资源
    最近更新 更多