2015-10-02 4 views
-2

в командной строке, если я запускаю свою программуПОлОжЕНИЯ аргумента будет исправлено

python parse.py config=abc.txt factor_date=20151001 like this

Я хочу, чтобы позиция аргумента будет исправлена. Это означает, что если я передаю аргумент, как показано ниже

python parse.py factor_date=20151001 config=abc.txt 

он должен показать ошибку.

import sys 

config_file=sys.argv[1] 
factor_date = sys.argv[2] 

argstring=""+config_file+" "+factor_date+"" 

arg_list = argstring.split(' ') 
input={} 

for arg in arg_list: 
    #x=arg.split("--") 
    key,val=arg.split("=")[0],arg.split("=")[1] 
    if key == "config": 
     input[key]=val 
    if key =="factor_date": 
     input[key]=val 
print input 
+0

Ваши аргументы являются необязательными? – GingerPlusPlus

+0

Почему, черт возьми, вы создаете 'argstring' только для' .split() 'it? – GingerPlusPlus

+0

Добавьте счетчик в цикл 'for'. Внутри 'if key ==" factor_date "проверить счетчик, чтобы увидеть, равно ли ему 2. – lit

ответ

0

Вы должны взглянуть на argparse. Ваш вариант использования - для позиционных аргументов. Если вы укажете имя аргумента (необязательные аргументы с аргументом argparse), то не имеет смысла форсировать определенный порядок.

Тем не менее, при использовании позиционных аргументов можно вызвать программу с аргументами worng, вам придется самостоятельно проверять значения, предоставленные пользователем. Тем не менее, вы можете принудительно ввести тип, и он автоматически преобразует строки, которые в описанном вами случае разрешат проблему.

0

Вы можете взглянуть на click. Это позволяет вам легко создавать интерфейсы командной строки. Это основано на использовании декораторов.

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