传递不带命令行的参数



我有一个模块,它接受来自命令行的参数,让我们调用该模块A

我想从另一个模块B执行A,这样B将设置A的参数-

而不将CCD_ 6作为单独的处理来执行。

有什么办法吗?

这取决于模块A如何接受它的参数。如果查看sys.argv,而没有__main__测试,则可以更改sys.argv:

sys.argv[1:] = ['arg1', 'arg2']

则导入模块CCD_ 11。

但是,如果您自己编写A,请使用从__main__测试调用的函数:

def main(*args):
    # main code for module
if __name__ == '__main__`:
    import sys
    main(*sys.argv[1:])

然后您可以导入A并直接调用main()

import A
A.main('arg1', 'arg2')

请注意,如果模块A不是您自己的,并且它确实__main__测试,但在该if __name__ == '__main__':套件中完成所有工作,那么您将陷入困境,必须重新生成该代码。

只需在脚本中定义一个主方法,就可以从命令行和作为模块运行:

def main(arg1, arg2):
    # All your code goes here
if __name__ == '__main__':
    main(*sys.argv[1:])

然后你可以做任何一个:

$ a.py x y

>>> import a
>>> a.main('x', 'y')
import sys
sys.argv[1:] = ["My Arguments","other Args"] #dont replace [0] ...since it can let you know which script was actually executed ...
import A
A.run() #or whatever

我认为会起作用。。。不是很推荐,但是。。。。

最新更新