从环境变量向Argparse提供数组类型参数



使用这段代码收集命令行参数,我想使用ENV变量提供参数,但替换没有按预期方式进行。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-m", default=[], nargs="+")
args = parser.parse_args()
print(args)
$ python test.py -m a1 a2

输出:

命名空间(m=[a1','a2'](

$ ARGS="a1 a2"; python test.py -m $ARGS

输出:

命名空间(m=[a1b1'](

所以,问题是,我如何使用ENV变量提供-m,以便argparse将其识别为数组,而不是单个arg?谢谢(我在这里使用zsh(

之所以会发生这种情况,是因为zsh默认情况下不拆分变量,但您可以设置SH_WORD_SPLIT变量,使其行为类似于bash。

SH_WORD_SPLIT=1 M="1 2 3" python3 mcve.py -m $M
Namespace(m=['1', '2', '3'])

如果您不想这样做,您总是可以手动拆分传递的参数,但这首先违背了ArgumentParser的目的。

相关内容

  • 没有找到相关文章

最新更新