2016-01-25 2 views
2

Теперь мой скрипт вызывает через:Argparse с двумя значениями для одного аргумента

python resylter.py -n *newfile* -o *oldfile* 

код выглядит следующим образом:

parser.add_argument('-n', '--newfile', help='Uses only with -o argument. Compares inputed OLD (-o) file with previous run results with NEW(-n) output.xml file with actual run results') 
parser.add_argument('-o', '--oldfile', help='Uses only with -n argument. Compares inputed OLD (-o) file with previous run results with NEW(-n) output.xml file with actual run results') 

и некоторые действия

Как я могу изменить его использовать, как это ?:

python resylter.py -n *newfile* *oldfile* 

sys.argv [-1] di dn't работы

+0

использовать аргумент 'nargs = '*'' –

+0

Я не думаю, что если это было бы полезно. Я просто оставил «oldfile» в качестве [позиционного аргумента] (https://docs.python.org/3/library/argparse.html#name-or-flags) (т.е. 'parser.add_argument ('oldfile',. ..) ') – soon

ответ

1

Wokrs с nargs = '*'

я следующее:

parser.add_argument('-c', '--compare', nargs = '*') 

_newfile_ = _args_.compare[0] 
_oldfile_ = _args_.compare[1] 

и теперь работает

1

звезда в nargs = '*' означает ноль или более аргументов (например, в регулярных выражениях), которые не имеет смысла в этом контексте. Вы хотите nargs = 2.

Смежные вопросы