使用单个main执行多个python文件

时间:2012-09-26 14:00:18

标签: python

我有多个python文件,每个文件都有不同的类和方法。我想用一个主要功能执行所有这些文件,我在所有这些文件之外单独使用。

例如:

我有三个文件说one.py,two.py,three.py

我没有任何主方法,但是当我执行它们时,我希望它们通过我单独的主函数。这可能吗,怎么样?

感谢。

4 个答案:

答案 0 :(得分:6)

您的意思是想要导入它们吗?

import one
import two
import three

result = one.func()
instance = two.YourClass()
something = three.func()

请注意python中没有“main方法”(也许你一直在使用JAVA?)。当你说python thisfile.py时,python执行“thisfile.py”中的所有代码。我们使用的一个巧妙的小技巧是每个“模块”都有一个属性“ name ”。直接调用的脚本(例如thisfile.py)将被分配名称"__main__"。这允许您分离模块的一部分,该部分是一个脚本,另一部分是在其他地方重用的部分。一个常见的用例是测试:

#file: thisfile.py
def func():
   return 1,2,3

if __name__ == "__main__":
   if func() != (1,2,3):
      print "Error with func"
   else:
      print "func checks out OK"

现在,如果我将其作为python thisfile.py运行,它将打印func checks out OK,但如果我将其导入另一个文件,例如:

#anotherfile.py
import thisfile

然后我通过python anotherfile.py运行该文件,不会打印任何内容。

答案 1 :(得分:3)

将它们用作模块并将它们导入包含main的脚本。

import one
import two
import three

if __name__ == '__main__':
    one.foo()
    two.bar()
    three.baz()

答案 2 :(得分:1)

创建一个导入这些文件并运行该文件的新文件。

答案 3 :(得分:1)

如前所述,如果您只是需要重新使用该功能,请执行导入。

但是,如果您事先不知道文件名,则需要使用稍微不同的导入构造。对于位于同一目录中的名为one.py的文件,请使用:

one.py的内容:

print "test"
def print_a():
    print "aa"

您的主文件:

if __name__ == "__main__":
    imp = __import__("one")
    print dir(imp)

打印测试并提供有关导入文件中包含的方法的信息。