Python 运行另一个 Python 脚本

Vaibhhav Khetarpal 2023年1月30日
  1. 使用 import 语句在另一个 Python 脚本中运行 Python 脚本
  2. 使用 execfile() 方法在另一个 Python 脚本中运行 Python 脚本
  3. 使用 subprocess 模块在另一个 Python 脚本中运行 Python 脚本
Python 运行另一个 Python 脚本

包含旨在由客户端直接执行的 Python 代码的基本文本文件通常称为脚本,正式称为顶级程序文件。

脚本旨在直接在 python 中执行。学习运行脚本和代码是在 Python 编程世界中学习的一项基本技能。Python 脚本通常具有扩展名 '.py'。如果脚本在 Windows 机器上运行,它可能有一个扩展名,.pyw

本教程将讨论在另一个 Python 脚本中运行 Python 脚本的不同方法。

使用 import 语句在另一个 Python 脚本中运行 Python 脚本

import 语句用于将多个模块导入 Python 代码。它用于从模块访问特定代码。此方法使用 import 语句将脚本导入 Python 代码并将其用作模块。模块可以定义为包含 Python 定义和语句的文件。

以下代码使用 import 语句在另一个 Python 脚本中运行 Python 脚本。

  • Script1.py
def func1():
    print("Function 1 is active")


if __name__ == "__main__":
    # Script2.py executed as script
    # do something
    func1()

输出:

Function 1 is active
  • Script2.py
import Script1.py


def func2():
    print("Function 2 is active")


if __name__ == "__main__":
    # Script2.py executed as script
    # do something
    func2()
    Script1.func1()

输出:

Function 2 is active
Function 1 is active

使用 execfile() 方法在另一个 Python 脚本中运行 Python 脚本

execfile() 函数在解释器中执行所需的文件。此函数仅适用于 Python 2。在 Python 3 中,execfile() 函数已被删除,但在 Python 3 中使用 exec() 方法可以实现相同的功能。

以下代码使用 execfile() 函数在另一个 Python 脚本中运行 Python 脚本。

  • Script2.py
# Python 2 code
execfile("Script1.py")

输出:

Function 1 is active

同样的事情可以在 Python 3 中使用:

  • Script2.py
exec(open("Script1.py").read())

输出:

Function 1 is active

使用 subprocess 模块在另一个 Python 脚本中运行 Python 脚本

subprocess 模块能够产生新的进程,也可以返回它们的输出。这是一个新模块,旨在替换多个旧模块,例如 os.system,后者以前用于在另一个 Python 脚本中运行 Python 脚本。

以下代码使用 subprocess 模块在另一个 Python 脚本中运行 Python 脚本。

  • Script1.py
def func1():
    print("Function 1 is active")


if __name__ == "__main__":
    # Script2.py executed as script
    # do something
    func1()
  • Script2.py
import subprocess

subprocess.call("Script1.py", shell=True)

输出:

Function 1 is active

尽管这三种方法都工作得很好,但与其他两种方法相比,这种方法具有优势。此方法不需要编辑现有的 Python 脚本并将其包含的所有代码放入子例程中。

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn