Python 选项解析器:带有可选参数的布尔标志

Posted

技术标签:

【中文标题】Python 选项解析器:带有可选参数的布尔标志【英文标题】:Python Option Parser: Boolean flag with optional parameters 【发布时间】:2011-08-23 04:52:27 【问题描述】:

我正在使用 optparse.OptionParser 来管理某些脚本的参数,而我想/想要做的事情是具有也可以接受参数的布尔标志(即 action=store_true)。

为了说明这一点,我有一个应用程序,它可以使用机器上找到的尽可能多的 GPU/处理器。由于各种原因,有时您希望限制它使用的设备数量,而不是进一步弄乱命令行,我希望能够:

script -c -g

意思是使用所有cpus和gpus,并且

script -c 2 -g 3

意味着将脚本执行限制为 2 个 CPU 和 3 个 GPU。

阅读 optparse 文档后,我一点也不聪明。哦,伟大的大师!把你的智慧借给我!

【问题讨论】:

【参考方案1】:

您可以使用callback 操作很容易地实现这一点。特别是,OptionParser 的回调操作的example 6 in the documentation 讨论了可变数量的参数。以下是该示例中的引述:

当你想要一个 选择可变数量的 论据。对于这种情况,您必须 写一个回调,因为 optparse 没有 提供任何内置功能 它。

【讨论】:

感谢 Eli,看到了这一点,但希望为“我是布尔值或参数”的极端情况提供更清晰的内容 @Andrew:我认为它是“0 或 1 个参数” 尽可能接近答案。谢谢@Eli

以上是关于Python 选项解析器:带有可选参数的布尔标志的主要内容,如果未能解决你的问题,请参考以下文章

什么是选项哈希?

Argparse - 子解析器中位置参数之前的可选参数

带有可选参数的可失败的便利初始化器

带有可选参数的扩展方法中的方法解析

如何在你的 shell 中使用互斥标志并添加一个可选参数标志(使用 getopts)

是否有带有可选类型提示的 OOP 语言?