python - 基于argparse的调用函数

标签 python argparse

我是 python 新手,目前正在使用它。 我有一个脚本可以对设备进行一些 API 调用。我想扩展功能并根据调用脚本时给出的参数调用不同的函数。

目前我有以下:

parser = argparse.ArgumentParser()
parser.add_argument("--showtop20", help="list top 20 by app",
                    action="store_true")
parser.add_argument("--listapps", help="list all available apps",
                    action="store_true")
args = parser.parse_args()

我也有一个

def showtop20():
    .....

def listapps():
....

如何根据给定的参数调用函数(并且仅此函数)? 我不想跑

if args.showtop20:
   #code here

if args.listapps:
   #code here

因为我想稍后将不同的功能移动到一个模块中,以保持主可执行文件干净整洁。

最佳答案

由于您似乎想根据给定的参数运行一个,而且只有一个函数,我建议您使用强制位置参数 ./prog command,而不是可选参数 ( ./prog --command1./prog --command2)。

所以,应该这样做:

FUNCTION_MAP = {'top20' : my_top20_func,
                'listapps' : my_listapps_func }

parser.add_argument('command', choices=FUNCTION_MAP.keys())

args = parser.parse_args()

func = FUNCTION_MAP[args.command]
func()

关于python - 基于argparse的调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27529610/

相关文章:

python - 如何从文本小部件中单独检索行

python - 在字典中查找键的最快方法

python - argparse - 每个操作不同的强制/可用参数

Python,如何使用字典填充数据框中的空值

python - 如何从 Python 中的嵌套字典中打印所有键和值?

python - argparse:所需组中的一些互斥参数

python - 如何列出您在谷歌 Protocol Buffer 中定义的属性?

Python,argparse : turn off help description for selected parameters

python - 列出图像路径 - 'Namespace' 对象没有属性 '__getitem__'

python - 如何使用 .apply 和用户定义函数在 pandas df 中创建列