Создание системы аргументов командной строки для Embedded Python - PullRequest
0 голосов
/ 14 января 2020

У меня есть основной python3 файл следующим образом:

import additionalfunctions

userIn = input("Select Function and command line arguments: ")

«extrafunctions.py» выглядит следующим образом:

def arbitraryfunction(arg):
   print("you entered the value: " + str(arg))

Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно чтобы выбрать эту функцию с помощью 'input ()' в основном файле python, а также передать ему один аргумент. Кто-нибудь знает, как проанализировать переменную 'userIn', чтобы выбрать и запустить функцию, и передать ей аргументы?

Любая помощь, которую вы можете оказать, будет очень признательна!

Ответы [ 2 ]

2 голосов
/ 14 января 2020

Вы можете использовать пакет по умолчанию argparse

и создать функцию, подобную приведенной ниже.

Код:

import argparse
#>>>>>>>>>>>>>>>>>>>>>>> ARGUMENT PARSING <<<<<<<<<<<<<<<<<<<<<<<<<<<<

def args():
 
parser = argparse.ArgumentParser()

parser.add_argument('-A','--Arg1',type=int,help='I am Argument 1',required=False)

parser.add_argument('-B','--Arg2',type=str,help='I am Argument 2',required=True)

parser.add_argument('-C','--Arg3',type=str,help='I am Argument 3',required=True)


args = parser.parse_args()

print("PARSING ARGUMENTS COMPLETED")

argparse документация : https://docs.python.org/3/library/argparse.html

0 голосов
/ 14 января 2020

В дополнение к ответу High-Octane, который является совершенно правильным, если у вас есть параметры командной строки, вы можете использовать exec() для запуска выбранной функции и передачи ей аргументов. Попробуйте это на основе своего собственного кода:

def arbitraryfunction(arg):
   print("you entered the value: " + str(arg))

allowed_functions = ['arbitraryfunction']

# write "arbitraryfunction 0" or similar when asked
userIn = input("Select Function and command line arguments: ")
args = userIn.split(" ")

if len(args) >= 2:
    fun = args[0]
    arg = args[1]

if fun in allowed_functions:
    exec(fun + "(" + str(arg) + ")")
else:
    print("Function not found. Please try again")

Затем вам нужно импортировать дополнительные функции (я включил его в тот же скрипт для простоты), например:

from additionalfunctions import *

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...