Python argparse 以 -- 作为值

标签 python argparse

有没有办法在不使用等号 (=) 的情况下使用 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/

相关文章:

python - 我应该在函数外部还是内部打开文件?

python - 如何旋转数据框

python - 访问参数帮助字符串中的 "implicit"元变量值

python - argparse:ArgumentDefaultsHelpFormatter 和 MetavarTypeHelpFormatter

python - Argparse:在 '--help' 中包含默认值的方法?

Python 3.x 对列表中包含数字和字母的文件名进行排序

python - 是否可以在python中使用pjsua2来实时使用AudioMedia Memory/Buffer-based Playback Port?

Python argparse.ArgumentParser - 以数字开头的选项名称?

python argparse - 如何允许解析器处理标志和非标志参数

python - argparse:如果设置了标志,则忽略位置参数?