argparse
Документація досить добре , але залишає кілька корисних деталей , які не можуть бути очевидні. (@Diego Navarro вже згадував про це, але я спробую трохи розширити його відповідь.) Основне використання полягає в наступному:
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--my-foo', default='foobar')
parser.add_argument('-b', '--bar-value', default=3.14)
args = parser.parse_args()
Об'єкт, з якого ви повертаєтесь, parse_args()
- це об’єкт «Простір імен»: Об’єкт, змінні якого члена названі за аргументами командного рядка. Namespace
Об'єкт як отримати доступ до аргументів і значенням , пов'язане з ними:
args = parser.parse_args()
print args.my_foo
print args.bar_value
(Зверніть увагу, що argparse
замінює "-" у назвах вашого аргументу підкреслення під час іменування змінних.)
У багатьох ситуаціях ви можете використовувати аргументи просто як прапори, які не мають значення. Ви можете додати такі в аргументації так:
parser.add_argument('--foo', action='store_true')
parser.add_argument('--no-foo', action='store_false')
Вищезгадане створить змінні з назвою 'foo' зі значенням True та 'no_foo' зі значенням False відповідно:
if (args.foo):
print "foo is true"
if (args.no_foo is False):
print "nofoo is false"
Зауважте також, що ви можете використовувати "необхідний" варіант при додаванні аргументу:
parser.add_argument('-o', '--output', required=True)
Таким чином, якщо ви опустите цей аргумент у командному рядку, argparse
ви скажете, що він відсутній, і зупинить виконання вашого сценарію.
Нарешті, зауважте, що можна створити структуру dict своїх аргументів за допомогою vars
функції, якщо це полегшує вам життя.
args = parser.parse_args()
argsdict = vars(args)
print argsdict['my_foo']
print argsdict['bar_value']
Як бачите, vars
повертає дикт із назвами ваших аргументів як ключі та їх значеннями як, er, значення.
Ви можете зробити багато інших варіантів і дій, але це повинно охоплювати найважливіші, загальні сценарії використання.
sys.argv
потрібний аргумент ...