Возможно, это глупый вопрос, но я не могу понять это.Какова область действия python argparse
Рассмотрим простой сценарий:
# file a.py
from b import foo
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-a')
args = parser.parse_args()
# file b.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-b')
args = parser.parse_args()
foo = 1
[подсказка] # питон a.py --help
Использование: a.py [-h] [-b B]
необязательные аргументы: -h, --help показать эту справку и выйти -b B
То, что я не понимаю, - это то, как get.py принимает аргумент 'b' вместо 'a' . В другом примечании, как мне импортировать только переменную, а не весь файл? не должен «с b import foo» справиться с этим?
Edit: Я отправил еще один вопрос, касающийся того же вопроса, так как я до сих пор не знаю, как решить мою проблему (is there a way to clear python argparse?)
Все, что вы не хотите запускать при импорте b, нужно зайти в блок 'if __name__'. Хотя вы можете определить парсер в b, вы, вероятно, не хотите запускать parse_args. В этом случае b parse_args столкнулся с '-h' и выпустил' sys.exit'. Входы, которые не вызвали ошибку, будут проанализированы обоими синтаксическими анализаторами. Но если вы хотите использовать аргументы, определенные парсером b, подумайте об импорте и передайте его как родительский парсер. – hpaulj