Доступ к Python аргументам CLI без точки - PullRequest
0 голосов
/ 05 августа 2020

Я использую argparse для моего Python CLI следующим образом:

import argparse

parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--myarg', type=str, help="Dummy arg")
args = parser.parse_args()

# access with dot notation
print(args.myarg)

Это отлично работает. Однако теперь я хочу добавить аргумент под названием --continue. Попытка получить доступ к аргументу с помощью args.continue дает мне синтаксическую ошибку.

Есть ли другой способ получить доступ к аргументам CLI, кроме записи через точку? Я пробовал использовать dict-подобный доступ args['continue'], но это дает мне TypeError: 'Namespace' object is not subscriptable. Неужели мне действительно нужно думать о другом имени аргумента CLI?

1 Ответ

3 голосов
/ 05 августа 2020

Использование vars() возвращает словарную форму объекта (например, args), позволяя вам делать именно то, что вы пробовали.

args = vars(parser.parse_args())

print(args['continue'])

В качестве альтернативы вы можете получить атрибут непосредственно из объекта с помощью встроенная функция getattr:

args = parser.parse_args()

print(getattr(args, 'continue')
...