我有多个python文件,每个文件都有不同的类和方法。我想用一个主要功能执行所有这些文件,我在所有这些文件之外单独使用。
例如:
我有三个文件说one.py,two.py,three.py
我没有任何主方法,但是当我执行它们时,我希望它们通过我单独的主函数。这可能吗,怎么样?
感谢。
答案 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)
打印测试并提供有关导入文件中包含的方法的信息。