Python 執行另一個 Python 指令碼

Vaibhhav Khetarpal 2023年1月30日 2021年7月12日
  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