Python argparse store_true 并将可选选项存储在一个参数中

Mat*_*w.J 3 python optional-parameters argparse

我需要识别是否单独给出参数或带有可选字符串或两者都没有

parser.add_argument(???)
options = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

所以

./prog.py --arg
Run Code Online (Sandbox Code Playgroud)

应存储''到 options.arg 中,

./prog.py --arg=lol
Run Code Online (Sandbox Code Playgroud)

存储'lol'到 options.arg 中并且

./prog.py
Run Code Online (Sandbox Code Playgroud)

左 options.arg 为None

我现在有:

parser.add_argument("--arg", nargs="?",type=str,dest="arg")
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的程序时./prog.py --argoptions.arg 仍然存在None。识别 --arg 的唯一方法是将其运行为./prog.py --arg=,这对我来说是个问题。

小智 7

使用const关键字:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--arg", nargs="?", type=str, dest="arg", const="")
print(parser.parse_args([]))
print(parser.parse_args(['--arg']))
print(parser.parse_args(['--arg=lol']))
Run Code Online (Sandbox Code Playgroud)

结果是

Namespace(arg=None)
Namespace(arg='')
Namespace(arg='lol')
Run Code Online (Sandbox Code Playgroud)