Вопрос

Я пытаюсь получить дополнительные параметры командной строки для сценария Python (2.7 под Windows), и все не идет гладко. Код:

parser = argparse.ArgumentParser(description = 'Process display arguments')
parser.add_argument('-t', nargs = '?', default = 'baz')
args = parser.parse_args(['-t'])
print args.t

Если я бегу "program.py"Без параметров, args.t печатается как ни один. Если я запускаю"program.py -t", args.t напечатан как ни один. Если я бегу"program.py -t foo", args.t напечатан как ни один.

Почему я не получаю значение от командной строки в args.t?

Это было полезно?

Решение

Не проходите ['-t'] в parse_args. Просто сделать:

args = parser.parse_args()

Любые аргументы, которые вы передаете в Parse_args, используются вместо вашей командной строки. Так что с этим аргументом не имеет значения, какую командную линию вы используете, Argparse никогда не видит ее.

Другие советы

Линия

args = parser.parse_args(["-t"])

передает аргументы командной строки ["-t"] парсеру. Вы хотите работать с фактическими аргументами командной строки, поэтому измените строку

args = parser.parse_args()

Использовать Const Keyword Argiry:

import argparse
parser = argparse.ArgumentParser(description = 'Process display arguments')
parser.add_argument('-t', nargs = '?', const = 'baz', default = 'baz')
args = parser.parse_args()
print args.t

Выход на его доходность:

% test.py          # handled by `default`
baz
% test.py -t       # handled by `const`
baz
% test.py -t blah
blah
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top