Рейтинг:0

можно ли динамически вызывать функцию через cli в скрипте python

флаг in

Я пытаюсь вызвать определенную функцию при вызове этого скрипта Python, т.е. у меня есть несколько функций в этом скрипте. Я пытался использовать глобальные переменные, но не тесто.

#!/usr/bin/python3

"""
Этот модуль используется для доступа к ключу служебной учетной записи, хранящемуся в секрете менеджера секретов.
"""


импорт системы
импортировать аргументы

импортировать json
импорт даты и времени
импортировать аргументы

деф parse_arguments():

    parser = argparse.ArgumentParser(description='Учетные данные ключа сервисной учетной записи', formatter_class=argparse.RawDescriptionHelpFormatter)

    parser.add_argument('-p', '--project_name',
                        metavar='<имя_проекта>',
                        help='Имя проекта GCP для получения учетных данных ключа сервисной учетной записи, хранящихся в секретном менеджере секретов',
                        требуется = Истина)

    parser.add_argument('-n', '--secret_name',
                        metavar='<имя_секрета>',
                        help='имя секрета, в котором хранятся учетные данные сервисной учетной записи',
                        требуется = Истина)

    parser.add_argument('-e', '--email_id',
                        metavar='<email_id>',
                        help='имя секрета, в котором хранятся учетные данные сервисной учетной записи',
                        требуется = ложь)

    парсеры = parser.parse_args()
    парсеры возврата


защита sa_credentials():
    """
    Это основной метод получения секрета менеджера секретов, который состоит из учетных данных служебной учетной записи.
    """
    параметры = parse_arguments()
    печать (варианты)

    имя_проекта = параметры.имя_проекта
    secret_name = параметры.secret_name

    распечатать("Это сработало")

если __name__ == "__main__":
    глобальные()[sys.argv[1]]

Вот как я запускаю это, но ничего не происходит

# ./test.py sa_credentials -p the-webbing-330212 -n my-secret
Рейтинг:1
флаг cn

Не рекомендуется вызывать метод через аргумент, это может быть ошибкой безопасности.

Вы должны использовать что-то вроде python test.py 'call_function_one' [...]

И затем в вашем сценарии вы должны получить аргумент и сделать:

если (arg[0] == 'call_function_one'):
  function_one (параметры)

Другое дело, вы можете напрямую проанализировать свой аргумент в своем главный, это обычный способ использовать arguments_parser, а затем вызывать свои функции :)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.