基于命令行参数调用python函数
我有一个具有多个功能的脚本:基于命令行参数调用python函数,python,Python,我有一个具有多个功能的脚本: def a(): pass def b(): pass def c(): pass 根据设计,将根据cmd行参数调用它。我可以创建几个if语句,用于计算应该运行哪个函数: if args.function == "a": a() elif args.function == "b": b() elif args.function == "c": c() 但是有没有更好的方法呢 你可以这样编一本字典 d = {"a"
def a():
pass
def b():
pass
def c():
pass
根据设计,将根据cmd行参数调用它。我可以创建几个if语句,用于计算应该运行哪个函数:
if args.function == "a":
a()
elif args.function == "b":
b()
elif args.function == "c":
c()
但是有没有更好的方法呢 你可以这样编一本字典
d = {"a" : a,
"b" : b}
然后发送
d[args.function]()
尝试使用eval
evalfunction\u name\u作为参数传递
这不需要使用if-else逻辑。作为参数传递的函数名将直接执行。也许您正在寻找类似的库?它使您可以轻松地添加带有修饰符的命令行子命令
import click
@click.group()
def cli():
pass
@cli.command()
def a():
print("I am a")
@cli.command()
def b():
print("Je suis b")
if __name__ == '__main__':
cli()
样本输出:
bash$ ./ick.py --help
Usage: ick.py [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
a
b
bash$ ./ick.py a
I am a
正如前面所指出的,你制作了一本字典,但是你将如何处理一个错误的输入?我将创建一个默认方法并使用dict.get方法: 然后通过检索函数来调用该函数:
functions.get(args.function.lower(), fallback)()
Python有几个我们可以利用的内置函数,例如,这种方法在Python中非常常见,用于命令行可编程应用程序。 基本要素:
import argparse
parser = argparse.ArgumentParser()
parser.parse_args()
通过此方法,您可以获得如下内容:
$ python3 prog.py -v
verbosity turned on
$ python3 prog.py --help
usage: prog.py [-h] [-v]
optional arguments:
-h, --help show this help message and exit
-v, --verbose increase output verbosity
你没有描述它有什么帮助。我看到了输出,但当调用'-v'选项时,不知道引擎盖下面是什么。也许您可以像示例中那样做。它们使用args.acculate,这将调用用acculate编写的函数,即sum或max。我认为如果在acculate中传递a、b或c,它也应该工作。
import argparse
parser = argparse.ArgumentParser()
parser.parse_args()
$ python3 prog.py -v
verbosity turned on
$ python3 prog.py --help
usage: prog.py [-h] [-v]
optional arguments:
-h, --help show this help message and exit
-v, --verbose increase output verbosity