可能这是一个愚蠢的问题,但我似乎无法弄清楚。考虑这个简单的场景:
# 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
[提示]#python a.py --help
使用方法:a.py [-h] [-b B]
可选参数: -h,--help 显示此帮助消息并退出 -b B
我不明白的是为什么a.py接受参数“b”而不是“a”。另外,如何仅导入变量而不是整个文件? 'from b import foo' 不应该解决这个问题吗?
编辑: 由于我仍然不知道如何解决我的问题(是否有一种清除Python argparse的方法?),因此我发布了另一个与同一问题相关的问题。
if __name__
块中。虽然您可能想在b中定义解析器,但可能不想运行parse_args。在这种情况下,b parse_args遇到了“-h”,并发出了一个sys.exit
。没有产生错误的输入将由两个解析器解析。但是,如果您想使用b解析器定义的参数,请考虑导入它,并将其作为a解析器的父级传递。 - hpaulj