У меня есть функция, которая принимает в качестве параметров входную папку (обязательно) и выходную папку (необязательно), но я хочу, чтобы значением по умолчанию для (дополнительной) выходной папки была входная папка.
Конечно, я могу сделать это, например,
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")
Есть идеи?