Я новичок в python и сейчас играю с ним. У меня есть скрипт, который выполняет некоторые вызовы API для устройства. Я хотел бы расширить функциональность и вызвать различные функции, основанные на аргументах, предоставляемых при вызове сценария.Функция вызова на основе argparse
В настоящее время у меня есть следующие:
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
, как я хочу, чтобы переместить различные функции к модулю позже на сохранении основной исполняемый файл в чистоте и порядке.
Вы могли бы иметь словарь аргументы отображения на функцию '{«showtop20»: showtop20, ...}' - вы затем обновить словарь, если функции перемещены/переименованы. – jonrsharpe
Вместо этого я использую 'store_const', с пустой функцией по умолчанию, а затем вызывать все функции по очереди – njzk2
https://docs.python.org/3/library/argparse.html#sub-commands - проверьте пример, который использует 'add_subparsers' и' set_defaults', чтобы связать команду и функцию. – hpaulj