Если я вызываю ниже сценарий с этими параметрами:argparse зависимость аргументов
--user u1 --password p1 --foo f1 --user u2 --user u3 --password p3
Тогда он будет печатать:
Namespace(foo=['bar', 'f1'], password=['p1', 'p3'], user=['u1', 'u2', 'u3'])
Вопрос: Есть ли способ для меня, чтобы установить зависимость между пользователем и пароль, поэтому он выдает ошибку, потому что пароль для пользователя u2 не указан?
Меньше актуальный вопрос: Как указать значение foo по умолчанию для всех пользователей? С данным вводом я хотел бы foo равным ['f1', 'bar', 'bar'].
Решение для моего основного вопроса состояло бы в том, чтобы проверить, что пользователь и пароль списков имеют одинаковую длину, но это не совсем то, что я ищу.
Вот сценарий:
import argparse
parser = argparse.ArgumentParser()
group = parser.add_argument_group('authentication')
group.add_argument('--user', action='append', required=True)
group.add_argument('--password', action='append', required=True)
group.add_argument('--foo', action='append', default=['bar'])
print(parser.parse_args())
Typing пароли в командной строке может быть угрозой безопасности. Например, они могут быть украдены кем-то, кто работает под управлением «ps». – unutbu
Спасибо @unutbu. «Реальные» аргументы на самом деле не являются именами пользователей и паролями. Я абсолютно ничего не знаю о безопасности. –
@unutbu, можете ли вы объяснить, что такое риск безопасности и как ps используется злонамеренно? Как, кстати, я ничего не знаю о безопасности. – RyanDay