首页 > 解决方案 > 包含多个 python 文件的 Python 程序

问题描述

我想写一个python程序,例如main.py,它包含两个或多个python程序(test1.py,test2.py..etc,.),它们被放置在这些程序的其他一些目录中,所有这些程序都有它的自己的带有参数的方法(test1.py,test2.py..etc,.)。我尝试了一些但案例失败,其中包含程序中的参数。有什么简单的方法可以在一个主要的 python 程序中访问多个程序吗?

标签: pythonpython-3.xpython-3.6

解决方案


当然。您可以使用import加载其他 python 文件:

# Use file1.py, file2.py
import file1
from file2 import func2

file1.func1()
func2()

如果您的其他文件是程序,而不仅仅是变量、类和函数,您可以避免执行此程序中的代码,如下所示:

# file1.py(old)

def func1():
   ...

func1()  # Execute func1 when this file is loaded.
# file1.py(new)

def func1():
   ...

if __name__=='__main__':
   func1()  # Execute func1 when this file is loaded.

仅当这是加载的第一个文件时,块内的代码if __name__=='__main__'才会运行。

# Use file1.py, file2.py
import file1
from file2 import func2

file1.func1()
func2()

如果您想将这些文件组织到一个目录中,您必须创建一个“模块”。这只需要您__init__.py在目录中放置一个空文件:

 + test.py
 + mymodule/
    + file1.py
    + file2.py
# Test.py. Use mymodule/file1.py, mymodule/file2.py
import mymodule.file1
from mymodule.file2 import func2

file1.func1()
func2()

如果 mymodule 在运行时位于当前目录中,这将起作用。(即你跑了python test.py而不是python a/b/c/test.py.

有关详细答案,请参阅http://docs.python.org/3/tutorial/modules.html


推荐阅读