-1

我有一个 Python 脚本 a.py 和 b.py,我想调用 b.py 的主函数并从 a.py 传递参数。如何从代码内部在 a.py 中添加选项并将其传递给 b.py 的 main ?我尝试将字典添加到我的附加选项中,但由于某些未知原因,b.py 没有得到正确的值。add_option 仅适用于命令行选项。

我已经在 a.py 中导入了 b,我正在尝试将 readOnly 值传递给 b.py 中的 main。基本上我不想将a.py中的readOnly作为命令行传递,而是通过a.py中的代码传递readOnly。

a.py

import b

def main()
    usage = "usage: %prog [options]"
    parser = OptionParser(usage)
    (options, _ ) = parser.parse_args()
    varsOptions = vars(options)
    varsOptions['readOnly'] = True
    b.main(varsOptions)


b.py

def main(argv):
    usage = "usage: %prog [options]"
    parser = OptionParser(usage)
    parser.add_option("-r", action="store_true", dest="readOnly")
    (options, _ ) = parser.parse_args()
    varsOptions = vars(options)
    print(varsOptions)

if __name__ == "__main__":
    main(sys.argv[1:])

为什么这段代码不起作用?

TIA,

约翰

4

3 回答 3

2

您应该看到官方文档中的示例:http: //docs.python.org/dev/library/argparse.html for argparse

对于较旧的 python,请参阅http://docs.python.org/dev/library/optparse.html

于 2012-05-25T18:43:27.400 回答
1

它不起作用,因为b.main不使用该argv参数。

您可以将argvtoparse_args作为参数传递,但它应该是字符串列表,而不是字典。

试试这个a

b.main(["-r"])
于 2012-05-25T19:47:08.557 回答
0

这不是一个好主意。

但如果你需要这样做,你可以使用 os run 命令来完成

os.system('script.py "options" ')

您应该阅读以下堆栈溢出

如何使用另一个 python 脚本文件中的参数执行 python 脚本文件

于 2012-05-25T18:46:22.207 回答