来自两个Python函数的合并选项

来自两个Python函数的合并选项,python,Python,我正在为另一个Python函数编写Python包装器脚本,该函数使用optparse(比如-p和-I)获取命令行选项。在我的包装函数中,我想添加一些外部函数中未定义的其他命令行选项,例如-x。我正在寻找一种将外部函数中定义的选项与包装器中定义的选项相结合的方法。外部脚本具有如下功能: def extparser(): from optparse import OptionParser parser = OptionParser( prog="external-pr

我正在为另一个Python函数编写Python包装器脚本,该函数使用optparse(比如
-p
-I
)获取命令行选项。在我的包装函数中,我想添加一些外部函数中未定义的其他命令行选项,例如
-x
。我正在寻找一种将外部函数中定义的选项与包装器中定义的选项相结合的方法。外部脚本具有如下功能:

def extparser():
    from optparse import OptionParser
    parser = OptionParser(
        prog="external-prog",
        usage="%prog [options]")

    parser.add_option(
        "-p", "--parameter", type="int", default=1,
        help="algo parameter")

    parser.add_option(
        "-i", "--iterations", type="int",
        help="number of iterations")

    (opts, args) = parser.parse_args()
    return opts
我无法更改外部函数中的代码。在我的包装器脚本中,我有如下内容:

#!/usr/bin/env python

from extprog import extparser

def newparser():
    from optparse import OptionParser
    parser = OptionParser(
        prog="newprog",
        usage="%prog [options]")

    parser.add_option(
        "-x", "--extraparam", type="int",
        help="another parameter")

    return parser.parse_args()

if __name__=="__main__":
    extparser()
    newparser()
当然,这并不像预期的那样有效:

[myhost]>./sotest.py -x 1 -p 2 -i 3

Usage: external-prog [options] <action> <name>

external-prog: error: no such option: -x
[myhost]>。/sotest.py-x1-p2-i3
用法:外部程序[选项]
外部程序:错误:无此选项:-x

有没有办法忽略外部程序的错误?外部程序中的实际选项列表相当长,我希望避免将其复制到包装器脚本中。

在调用外部脚本optpass代码时,无法避免出现该错误。您可以使用该模块通过手动调用来控制传递给外部脚本的变量

例如:


所以你根本不能改变外部函数?你能复制这个文件并修改它以满足你自己的需要吗?只是一个想法。不,我不能修改外部函数。我可以复制,但这正是我想要避免的。
subprocess.call(["external-prog", "-p", "some p value", "-i", "10"])