关于python:argparse一个参数模式

argparse a pattern of arguments

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

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

要求是

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

我也对这些限制感兴趣:

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

argparse可以采用一种模式的agruments吗?我可以编写一个自定义操作或类型来执行我想要的操作吗?我在想

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


这不是一个很好的argparse配合。关于接受广义key=value输入和各种蹩脚的答案,有许多问题。在很大程度上,答案就是自己解析字符串,要么来自sys.argv要么来自parse_known_argsextras

使用argparse(python)创建变量键/值对

这一点与您对密钥形式的附加要求是双重的。

在最近的这个问题中,我建议使用appendnargs=2,这样输入的形式是:

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

生产

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

你可以对你的心的内容进行处理和价值检验。

使用python argparse支持任意数量的相关命名参数