Python argparse 切换标志

标签 python argparse

argparse 中有什么方法可以解析像 [+-]a,b,c,d 这样的标志吗?

foo.py +s -b

应该将 True 存储在 sdest 中,将 False 存储在 bdest 中,就像完成的一样通过 Windows attrib 或 Linux chmod

目前,我使用 2 个单独的参数 +s-s 分别与 store_truestore_false .但是它创建了一个丑陋的帮助,它列出了每个标志两次 (+a & -a)

另一种解决方法是使用正则表达式手动解析扩展的 arg(不知何故似乎更容易使用自定义描述,但是在这样做之前我只是想看看周围是否有任何东西使用它我可以使用 argparse 本身执行相同的操作。

最佳答案

您可以通过将 -s+s 传递给单个 add_argument 调用并使用自定义操作来实现:

class ToggleAction(argparse.Action):
    def __call__(self, parser, ns, values, option):
        setattr(ns, self.dest, bool("-+".index(option[0])))
ap = ArgumentParser(prefix_chars='-+')
ap.add_argument('-s', '+s', action=ToggleAction, nargs=0)

ap.parse_args(['+s'])
Namespace(s=True)

ap.parse_args(['-s'])
Namespace(s=False)

关于Python argparse 切换标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11507756/

相关文章:

python - 如何为 PyQt 安装新的 QStyle?

python - 在 CSV 中保存数组 3D

python - 还有其他方法可以用组解析参数吗?

python - 如何创建具有多个位置参数的 argparse 互斥组?

python - nargs ='+' 的 argparse 元变量获取帮助信息中的编号参数?

python放入列表

python - 如何在 python 中删除图像上的网格线?

python - 使用 headless chrome 错误设置 selenium : WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally

python - 如何使用 argparse 将列表作为命令行参数传递?

python - 如何区分argparse,python中的默认值和用户给定值?