小编Jin*_*nKo的帖子

在由多个自定义模块支持的多个脚本中使用python的argparse

我正在构建一组用于管理基础架构的脚本和模块.为了保持井井有条,我希望尽可能地加强努力,并尽量减少更新脚本的锅炉.

特别是这里的问题是合并ArgumentParser模块.

一个示例结构是使脚本和库组织如下:

|-- bin
    |-- script1
    |-- script2
|-- lib
    |-- logger
    |-- lib1
    |-- lib2
Run Code Online (Sandbox Code Playgroud)

在这种情况下,script1可能只会使用loggerlib1,而script2使用loggerlib2.在这两种情况下,我希望记录器接受'-v'和'-d',同时script1也可以接受额外的args和lib2其他args.我知道这会导致冲突,并会手动管理.

SCRIPT1

#!/usr/bin/env python
import logger
import lib1
argp = argparse.ArgumentParser("logger", parent=[logger.argp])
Run Code Online (Sandbox Code Playgroud)

SCRIPT2

#!/usr/bin/env python
import logger
import lib2
Run Code Online (Sandbox Code Playgroud)

记录仪

#!/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.")
Run Code Online (Sandbox Code Playgroud)

每个脚本和lib都可能拥有它自己的参数,但是这些都必须合并到一个最终的arg_parse()中

到目前为止,我的尝试导致无法继承/扩展argp设置.如何在库文件和脚本之间完成?

python inheritance command-line-arguments argparse

6
推荐指数
1
解决办法
3313
查看次数