如何用Python argparse仅调用参数(无需传值)触发函数执行
解决argparse开关型参数的问题
嗨,这问题很常见!你现在的代码里,-s/--show参数默认需要传入一个值,因为argparse默认把它当成需要接收参数值的选项。要实现“只传参数名就触发动作”的效果,只需要给add_argument加上action='store_true'参数就行啦。
修改后的代码
import argparse parser = argparse.ArgumentParser(description="Database accounts manager") # 添加action='store_true',把参数变成开关型选项 parser.add_argument("-s", "--show", help="Shows all database rows and columns", action='store_true') args = parser.parse_args() if args.show: print("i am beautiful")
为什么这样有效?
action='store_true'告诉argparse:当用户使用-s或--show时,自动把args.show设为True;如果不使用这个参数,默认值是False。- 你原来写的
dest="show"其实可以省略,因为argparse会自动把长选项--show作为dest的名称(没指定时默认用长选项名)。 required=False是argparse的默认设置,所以也不用特意写出来。
测试命令
现在直接运行以下命令就能触发print语句:
python file.py -s # 或者 python file.py --show
如果不传入-s/--show,args.show就是False,不会执行print内容。
扩展小技巧
如果需要一个“反向开关”(比如--hide,传入时设为False),可以用action='store_false',此时参数的默认值会变成True。
内容的提问来源于stack exchange,提问作者Tiago Oliveira
相关产品推荐
相关产品推荐

