Argparse с несколькими флагами и аргументамиPython

Программы на Python
Ответить
Anonymous
 Argparse с несколькими флагами и аргументами

Сообщение Anonymous »

Я хочу, чтобы мой код мог вызывать разные функции в соответствии с флагом, а затем использовать аргумент, передаваемый после флага, в качестве входных данных для функции.
Пример ожидаемого результата:

Код: Выделить всё

$ python3 test.py -a 2
4

$ python3 test.py -a human123


$ python3 test.py -h human123
Hello, human123
Вот мой пример кода:

Код: Выделить всё

class Test:
def __init__(self):
pass

def add(self, a):
return a+a

def hello(self, name):
return f"Hello, {name}"

parser = argparse.ArgumentParser()

parser.add_argument('-a', '--add', dest='command', action='store_consts', const='add', nargs=1, help='add a to itself')
parser.add_argument('-h', '--hello', dest='command', action='store_consts', const='hello', nargs=1, help='hello!')

args = parser.parse_args()
t = Test()

if args.command=='add':
print(t.add(args.add))
elif args.command=='sub':
print(t.hello(args.hello))
Этот пример кода в настоящее время делает то, чего я хочу достичь. Я пробовал много способов решить эту проблему: удалить константы, изменить действие на «сохранить», изменить значение nargs на «?» и т. д., однако он продолжает выдавать мне различные виды ошибок, такие как TypeError и т. д.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»