我正在写一个程序,在其中我想有这样的论点:

--[no-]foo   Do (or do not) foo. Default is do.

有没有办法让argparse帮我做这件事?

2012年我在这里使用Python.

事实证明,在Python3.9版本的argparse中添加了BooleanOptionalAction,解决了这个问题,我已经将我接受的答案更改为新的答案.但是,如果您仍在使用Python 3.9之前的版本,本页上的其他答案应该会有所帮助.

推荐答案

v3.9增加了一个action类来实现这一点.从the docs开始(接近action段末尾)

BooleanOptionalActionargparse中提供,并增加了对布尔操作的支持,例如--foo--no-foo:

>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', action=argparse.BooleanOptionalAction)
>>> parser.parse_args(['--no-foo'])
Namespace(foo=False)

Python-3.x相关问答推荐

While循环不停止地等待,直到时间.睡眠结束

如何使用魔杖扭曲图像

如何将项目添加到Python中具有固定大小的列表列表中

使用 iloc 或 loc 对多列进行过滤

PyQt5 中耦合滑块和拨号小部件.解决结果不一致的问题

Python webdrivermanager 和 Chrome 115.0 的 URL https://chromedriver.storage.googleapis.com/LATEST_RELEASE_115.0.5790 错误没有此类驱动程序

为什么 get_form 方法中小部件的更改没有反映 Django 管理站点中的更改

在特定条件下从 DataFrame 中提取特定组

提取图像中的背景并保存

在 pytest 中,如何测试 sys.exit('some error message')?

这种类型提示有什么作用?

如何融化具有自定义名称的Pandas

从 yahoo Finance python 一次下载多只股票

Python 类型提示语法如何/为什么起作用?

如何编写可 Select 充当常规函数的 asyncio 协程?

是否在未完成初始化的对象上调用了 del?

TypeError:只有整数标量数组可以转换为标量索引

尾部斜杠的 FastAPI 重定向返回非 ssl 链接

用 Anaconda 安装了一个包,无法在 Python 中导入

在 Python 中生成马尔可夫转移矩阵