我是 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/