使用一个函数运行多个Python脚本

时间:2015-05-27 18:43:30

标签: python

我在IDE中分别运行了一些.py程序(我猜它们只是作为单独的进程运行,对吧)。他们每个人都有几个类,一些全局变量等和主要功能。如何以编程方式实现相同的效果,即按特定顺序运行这些脚本?

我尝试了几种方法,但它们似乎没有产生与手动启动这些脚本相同的效果。

3 个答案:

答案 0 :(得分:0)

您是否曾尝试编写其他脚本,从这些单独的程序中导入所需的内容并以您指定的方式运行它们?

答案 1 :(得分:0)

您可以制作第三个脚本,其中包含您希望运行的所有其他脚本的名称,然后对subprocess进行python命令调用 详细了解子流程here

答案 2 :(得分:0)

一般来说,导入脚本会运行脚本。如果我有一个名为spam.py的脚本,其内容为:

print 'eggs'

然后我可以使用以下内容在同一目录中编写另一个脚本run.py

import spam

当我运行python run.py时,它会输出'eggs'。

用作导入的库模块的大多数脚本只包含函数和类定义。导入它们时仍会运行这些模块,但除了进行定义之外,它们实际上并不执行任何操作。

因此,如果我将spam.py更改为:

def main():
    print 'eggs'

然后当我跑python run.py时,实际上什么都不会发生。但我可以将run.py改为:

import spam
spam.main()

现在它将在命名空间main中定义spam,并通过调用main()打印'eggs'。

最后,有时脚本既可以用作要导入的模块,也可以用作自己运行的脚本。为此,通常情况下,导入时除了定义模块和类之外,您不希望脚本执行任何操作。您可以按照以下方式使spam.py工作:

def main():
    print 'eggs'

if __name__ == '__main__':
    main()

现在,如果您运行python spam.py,它会将'鸡蛋'打印到屏幕上。但如果你import spam它不会。 if __name__ == '__main__':中的语句套件仅在您直接调用脚本时运行。

但是,通过导入spam并调用python spam.py,您仍然可以从spam获得与main相同的行为:

import spam
spam.main()

再一次,这会将鸡蛋打印到屏幕上。

因此,如果您要从其他脚本按顺序运行许多脚本foo.pybar.pybaz.py,则只需导入所有脚本,然后再导入命令受if __name__ == '__main__':保护,您在调用脚本中运行它们,确保为每个命令添加适当的命名空间(即如果在main()中调用foo.py,则调用{{1} }})。