Python argparse 允许组合标志

标签 python command-line-arguments argparse

argparse 是否可以像这样解析组合标志:

app.py -bcda something

在这种情况下,我希望将 something 设置为 -a,其余的将存储为 True。基本上:

app.py -b -c -d -a something

我知道大多数程序都允许这样做,例如grep -rEw,但是用 argparse 来做这件事有多难?

最佳答案

您可以使用 store_const 实现此目的:

parser = argparse.ArgumentParser()
parser.add_argument('-a', action='store_const', const=True, default=False)
parser.add_argument('-b', action='store_const', const=True, default=False)
args = parser.parse_args()

然后您可以使用 -a -b-ab(或 -a,或 -b).

编辑:如果您希望其中一个标志接受参数,则需要将其作为链的最后一项传递。所以如果 a 接受一个参数,你需要做 -bcda something

关于Python argparse 允许组合标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21286203/

相关文章:

c++ - 在 C++ 中解析命令行参数?

c - 运行一个程序,我将文件名传递给 Main

Python argparse parse_args 到全局命名空间(或者这是一个坏主意的原因)

python - 抓取时删除重复的链接

javascript - 在没有设置/绘图格式的情况下使用 p5 的功能

python - Django 1.8 migrate 没有创建表

python - argparse 何时停止显示无参数的 'short help' ?

python - 如何将结果仅写入测试套件selenium中的一个文件

c# - 命令行参数参数限制

python - 如何使用 python argparse 将 add_argument_group 添加到 add_mutually_exclusive_group