2016-03-16 3 views
1

Я хочу, чтобы создать сценарий, как этотразбора аргумента питон сценарий

./myscript.py -g parser -a parserapp 

и всякий раз, когда сценарий отсутствует один вариант такого как ./myscript.py -g parser, он напечатает использование и выходу из сценария

The script should be: ./myscript.py -g parser -a parserapp 

Итак, мой вопрос в том, как я могу проверить, отсутствует ли опция -a или -g; поэтому он может распечатать использование сценария и выйти.

Спасибо за вашу помощь

+6

Посмотрите на существующие модули, уже имеющие параметры командной строки , такие как 'argparse' – DainDwarf

+0

Да, argparse - это путь. Не изобретайте велосипед. –

+0

Я сделал, и, кажется, нет ничего, что могло бы помочь мне проверить, отсутствует ли мой вариант. – Alexander

ответ

3

Использование argparse

import argparse 

parser = argparse.ArgumentParser() 
parser.add_argument("-g", "--gggg", help="g parameter",required=True) 
parser.add_argument("-a", "--aaaa", help="a parameter",required=True) 
args = parser.parse_args() 
print args.g, args.a 

При запуске с -h он будет показывать помощь:

~#:python myscript.py -h 
usage: myscript.py [-h] -g GGGG -a AAAA 

optional arguments: 
    -h, --help   show this help message and exit 
    -g GGGG, --gggg GGGG g parameter 
    -a AAAA, --aaaa AAAA a parameter 

Если вы пропустите параметр он будет печатать сообщение об ошибке:

myscript.py: error: argument -g/--gggg is required 
1

Синтаксический параметров может быть сделано с optparse или argparse. Вы можете сделать отличные варианты помощи и так далее. Также легко принять различные параметры.

Использование argparse: https://docs.python.org/2/howto/argparse.html

2

Для вашей потребности argparse можете проверить погоду аргумент отсутствует или не нравится:

import argparse 
parser = argparse.ArgumentParser(description='My Super Script') 
parser.add_argument(
     '--parser', '-p', 
     required=True, 
     help='Parser Type' 
     ) 
parser.add_argument(
     '--application', '-a', 
     required=True, 
     help='Application Name' 
     ) 
args = parser.parse_args() 

По умолчанию argparse рассмотрит именованный аргумент необязательно, если вы не укажете required=True Если два аргумента не указаны, это приведет к печати справки по умолчанию.
ref