Python (3.6.3) argparse: значение по умолчанию для необязательного параметра, являющегося значением другого параметра - PullRequest
0 голосов
/ 31 января 2020

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

Конечно, я могу сделать это, например,

p = argparse.ArgumentParser(description="blah")
p.add_argument('inpath', type=str, help="Path to input")
p.add_argument('--outpath', required=False, type=str, help="Path to output")

argin = p.parse_args()

if argin.outpath is None:
    argin.outpath = argin.inpath

, но я хочу установить значение по умолчанию в определении. В другом посте ответ таков: это невозможно, но я не верю этому, потому что я пробовал

p = argparse.ArgumentParser(description="blah")
p.add_argument('inpath', type=str, help="Path to input")
p.add_argument('-o', '--outpath', required=False, type=str, 
               default=p.parse_args().inpath, help="Path to output")

, и это работает. Единственная проблема заключается в том, что если я запускаю свою функцию с опцией -h, я не вижу там опции --outpath; Я получаю

usage: argparse_test.py [-h] inpath

positional arguments:
  inpath      Path to input files.

optional arguments:
  -h, --help  show this help message and exit

То же самое происходит, если я создаю функцию, скажем

def assign():
    return p.parse_args().inpath

и устанавливаю параметр default в методе add_argument() на assign:

p.add_argument('-o', '--outpath', required=False, type=str, default=assign(),
               help="Path to output")

Есть идеи?

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