有没有办法在不使用等号 (=) 的情况下使用 argparse 将 --
作为值传递给 Python 程序?
我添加到 argparser 的命令行参数定义如下:
parser.add_argument('--myarg', help="my arg description")
你会在这样的程序中使用这个参数:
python myprogram.py --myarg value123
有没有办法用 -- 作为值而不是 'value123' 来运行这个程序?
即
python myprogram.py --myarg --
最佳答案
我怀疑不可能让 argparse
本地执行此操作。不过,您可以预处理 sys.argv
,作为一种非侵入式解决方法。
import sys
from argparse import ArgumentParser
from uuid import uuid4
sentinel = uuid4().hex
def preprocess(argv):
return [sentinel if arg == '--' else arg for arg in argv[1:]]
def postprocess(arg):
return '--' if arg == sentinel else arg
parser = ArgumentParser()
parser.add_argument('--myarg', help="my arg description", type=postprocess)
args = parser.parse_args(preprocess(sys.argv))
关于Python argparse 以 -- 作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40685320/