没有命令行传递参数

时间:2012-12-23 17:53:02

标签: python command-line-arguments

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

我想从另一个模块A执行B,以便B设置A的参数 -

未将A作为单独的流程执行。

有什么办法吗?

3 个答案:

答案 0 :(得分:3)

这取决于模块A如何获取它的参数。如果查看sys.argv并且没有__main__测试,那么您可以更改sys.argv

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

然后导入模块A

但是,如果您自己编写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__':套件中的所有工作都已完成,然后你沉没了,不得不重现那段代码。

答案 1 :(得分:2)

只需在脚本中定义一个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')

答案 2 :(得分:0)

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

我认为会有效......不是真的推荐,但......

相关问题