我正在构建一组用于管理我们的基础设施的脚本和模块。为了让事情井井有条,我想整合尽可能多的努力,并尽量减少新脚本的样板代码。
特别是这里的问题是整合 ArgumentParser 模块。
一个示例结构是让脚本和库组织如下:
|-- bin
|-- script1
|-- script2
|-- lib
|-- logger
|-- lib1
|-- lib2
在这种情况下script1
只能利用logger
and lib1
, while script2
会利用logger
and lib2
。在这两种情况下,我希望记录器接受“-v”和“-d”,而script1
也可以接受额外的参数和lib2
其他参数。我知道这可能会导致冲突,并将手动管理。
script1
#!/usr/bin/env python
import logger
import lib1
argp = argparse.ArgumentParser("logger", parent=[logger.argp])
script2
#!/usr/bin/env python
import logger
import lib2
logger
#!/usr/bin/env python
import argparse
argp = argparse.ArgumentParser("logger")
argp.add_argument('-v', '--verbose', action="store_true", help="Verbose output")
argp.add_argument('-d', '--debug', action="store_true", help="Debug output. Assumes verbose output.")
每个脚本和库都可能有自己的参数,但是这些都必须合并到一个最终的 arg_parse() 中
到目前为止,我的尝试导致未能继承/扩展 argp 设置。如何在库文件和脚本之间完成此操作?