Python Argparse, как ссылаться на аргументы по имени
Это вопрос про argparse в python, это наверное очень просто
import argparse
parser=argparse.ArgumentParser()
parser.add_argument('--lib')
args = parser.parse_known_args()
if args.lib == 'lib':
print 'aa'
это будет работать, но вместо вызова args.lib, я хочу сказать только "lib" (я не хочу набирать больше), есть ли способ экспортировать все переменные args из модуля (т.е. изменить область видимости). так что я могу напрямую проверить значение lib, не указывая имя модуля на передней панели
PS: у меня много переменных, я не хочу переназначать каждую
3 ответа
Во-первых, я собираюсь рекомендовать использовать args
спецификатор. Это очень ясно, где lib
идет от. Тем не менее, если вы обнаружите, что часто ссылаетесь на аргумент, вы можете присвоить его более короткому имени:
lib = args.lib
Есть способ выгрузить все атрибуты в глобальное пространство имен одновременно, но он не будет работать для локального пространства имен функции, и используя globals
без очень веской причины плохая идея. Я бы не стал экономить несколько экземпляров args.
быть достаточно веской причиной. Тем не менее, вот оно:
globals().update(args.__dict__)
Конечно, просто добавьте строку, которая назначает args.lib
в lib
,
import argparse
parser=argparse.ArgumentParser()
parser.add_argument('-lib')
args = parser.parse_known_args()
lib = args.lib
if lib == 'lib':
print 'aa'
Грубо... но только потому, что вы можете не значит, что вы должны... но только для ног globals().update(dict(args._get_kwargs()))