Argparse для обработки 0, 1 или 2 аргументов, предоставленных пользователем - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть сценарий использования, в котором я хотел бы разрешить пользователю указывать нет, частичную или полную настройку некоторых путей сохранения. Так что-то вроде:

my_parser.add_argument(
        "-o",
        "--output",
        help="Paths where to save stuff",
        type=str,
        required=False,
        const=['save1', 'save2'],
        nargs="?",
        default=None
    )

Так что я бы хотел разобраться в следующих ситуациях:

  • Пользователь ничего не предоставляет. Затем я использую save1 и save2 по умолчанию;
  • Пользователь предоставляет только одно из двух мест сохранения. Тогда мне нужно будет определить, какой из них указан, и использовать другое значение по умолчанию
  • . Пользователь предоставляет оба места сохранения

Мне интересно:

  • Это хорошая практика? Может быть, мне следует ограничить вариант использования либо использованием значений по умолчанию, либо указанием обоих мест сохранения?
  • Если это приемлемо, как я могу справиться с этим с помощью argparse? Я вижу, как я мог бы использовать параметр append_const, чтобы проверить, были ли предоставлены пользователем значения 1 или 2, но не то, как я могу различить guish, если он имеет в виду save1 местоположение или save2 местоположение. Кроме того, что если в какой-то момент мне нужно будет хранить больше вещей в append_const? Это может стать сложным
...