【问题标题】:argparse a pattern of argumentsargparse 参数模式
【发布时间】:2017-11-18 06:23:08
【问题描述】:

我需要在表单中有一个命令行

python script.py --step1=100 --step3=53 --step2=34

要求是

  • 不知道提前有多少--stepN标志
  • --stepN 标志的顺序没有设置,所以我不能只使用action='append'

我也对这些限制感兴趣:

  • 步数应该是连续的,所以如果使用了--step20但缺少--step19,这是一个错误。
  • 我想要一个列表中的值的目的地。所以在上面的命令行示例中,我想做一些类似
args = parser.parse_args()
args.steps # is list [100, 34, 53]

argparse 可以采用 agruments 模式,并且我可以以某种方式编写自定义操作或类型来执行我想要的操作吗?我在想类似的东西

parser.add_argument('--step*',
                    type=CustomType,
                    action=CustomAction,
                    help='Use --step1=a --step2=b, ....')

【问题讨论】:

  • 您可以根据自己的要求传递字典。

标签: python python-2.7 arguments argparse


【解决方案1】:

这不适合argparse。关于接受泛化的key=value 输入以及各种杂乱无章的答案存在许多问题。在大多数情况下,答案相当于自己解析字符串,无论是来自sys.argv 还是parse_known_argsextras

Create variable key/value pairs with argparse (python)

您对密钥形式的附加要求更是如此。

在最新的此类问题中,我建议使用appendnargs=2,因此输入格式为:

python script.py --step 1 100 --step 2 53 --step 3 34

生产

Namespace(step=[[1,100], [2,53], [3, 24]])

您可以根据自己的喜好进行处理和检查。

Support arbitrary number of related named arguments with Python argparse

【讨论】:

    猜你喜欢
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 2012-02-20
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多