Наличие опций в argparse с тире
Я хочу иметь некоторые параметры в модуль argparse, такие как --pm-export
однако, когда я пытаюсь использовать его как args.pm-export
Я получаю ошибку, что нет атрибута pm
. Как я могу обойти эту проблему? Можно ли иметь -
в параметрах командной строки?
3 ответа:
для необязательных действий аргумента значение dest обычно выводится из строк параметров. ArgumentParser генерирует значение dest, принимая первую длинную строку параметра и избавлением от первоначальной
--
string. внутренние-
символы будут преобразованы в_
символы чтобы убедиться, что строка является допустимым атрибутом имятак что вы должны использовать
args.pm_export
.
к сожалению, замена тире на подчеркивание не работает для positionalarguments (не с префиксом
--
) какparser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument('logs-dir', help='Directory with .log and .log.gz files') parser.add_argument('results-csv', type=argparse.FileType('w'), default=sys.stdout, help='Output .csv filename') args = parser.parse_args() print args # gives # Namespace(logs-dir='./', results-csv=<open file 'lool.csv', mode 'w' at 0x9020650>)
Итак, вы должны использовать 1-й аргумент для
add_argument()
имя атрибута иmetavar
кварг, чтобы установить, как это должно выглядеть в справке:parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument('logs_dir', metavar='logs-dir', nargs=1, help='Directory with .log and .log.gz files') parser.add_argument('results_csv', metavar='results-csv', nargs=1, type=argparse.FileType('w'), default=sys.stdout, help='Output .csv filename') args = parser.parse_args() print args # gives # Namespace(logs_dir=['./'], results_csv=[<open file 'lool.csv', mode 'w' at 0xb71385f8>])