如何讓一個 Python 檔案執行另一個 Python 檔案?


Python 編碼中,遇到需要一個 Python 指令碼執行另一個指令碼的情況並不少見。本文將討論並探索四種不同的方法來輕鬆高效地完成此任務。您將逐步瞭解每種方法,並藉助分步說明和實際程式碼示例。閱讀完本文後,您將掌握各種技術,能夠在程式碼中執行 Python 檔案。讓我們開始這段激動人心的 Python 指令碼執行之旅吧!

理解 Python 指令碼執行

在開始討論程式碼示例之前,讓我們先花點時間來理解從另一個 Python 檔案執行 Python 檔案的過程。Python 提供了幾種方法來完成此任務,使您能夠根據專案的需求和要求執行特定的指令碼。無論您是構建複雜的應用程式還是自動化任務,當您需要 Python 指令碼之間的無縫互動時,這些技術都非常有用。

使用 os.system()

在第一個示例中,使用os.system()來執行另一個 Python 檔案。

在此程式碼片段中,首先匯入os 模組execute_python_file() 方法以file_path作為引數,表示要執行的所需 Python 檔案的路徑。我們使用os.system() 函式透過“python”命令執行指定的 Python 檔案。如果找不到檔案,則會顯示一個合適的錯誤訊息。

示例

import os

def execute_python_file(file_path):
   try:
      os.system(f'python {file_path}')
   except FileNotFoundError:
      print(f"Error: The file '{file_path}' does not exist.")

os.system 函式輸出執行命令的退出程式碼。但是,在此當前實現中,發現該函式不返回任何內容。

使用 subprocess.run()

此特定示例說明了使用subprocess.run()執行 Python 指令碼。

在這裡,我們匯入subprocess模組;此模組提供了比os.system()更高階的程序處理功能。file_path作為execute_python_file()函式的引數,如前面的示例所示。然後,我們使用subprocess.run()執行由file_path指示的 Python 檔案。該命令作為引數列表給出,其中“python”作為第一個元素,Python 檔案的路徑作為第二個元素。如果找不到檔案,則會顯示一條適當的錯誤訊息。

最好使用subprocess.run()subprocess.Popen()以及適當的引數來安全地執行命令。

如果需要,捕獲並返回執行的 Python 檔案的退出程式碼或任何其他輸出非常有用。

在此,該函式使用subprocess.run()執行 Python 檔案並捕獲輸出

透過此實現,它將使您能夠執行 Python 檔案以及捕獲執行指令碼的標準輸出和標準錯誤。

示例

import os
import subprocess

def execute_python_file(file_path):
   try:
      completed_process = subprocess.run(['python', file_path], capture_output=True, text=True)
      if completed_process.returncode == 0:
         print("Execution successful.")
         print("Output:")
         print(completed_process.stdout)
      else:
         print(f"Error: Failed to execute '{file_path}'.")
         print("Error output:")
         print(completed_process.stderr)
   except FileNotFoundError:
      print(f"Error: The file '{file_path}' does not exist.")

file_path = '/content/fubar.py'
execute_python_file(file_path)

輸出

對於某個檔案,以下為輸出

Execution successful.
Output:
Hi

使用 exec()

在此示例程式碼中,我們介紹了用於執行 Python 指令碼的 exec() 函式。

在這裡,我們使用內建的exec()函式執行指定檔案中存在的 Python 程式碼。execute_python_file()函式以file_path作為引數;file_path是要執行的 Python 檔案的路徑。我們使用open()以讀取模式開啟檔案,並將內容讀取到python_code變數中。然後,我們將python_code作為引數傳遞給exec()以執行 Python 指令碼。如果找不到檔案,則會顯示相應的錯誤訊息。

示例

def execute_python_file(file_path):
   try:
      with open(file_path, 'r') as file:
         python_code = file.read()
         exec(python_code)
   except FileNotFoundError:
      print(f"Error: The file '{file_path}' does not exist.")
file_path ='/content/foo.py'

execute_python_file(file_path)      

輸出

對於某個檔案 foo.py,以下為輸出

Lorem Ipsum

使用 importlib.import_module()

在最後一個示例中,我們首先使用 importlib.import_module()來執行 Python 檔案。

在此程式碼片段中,我們匯入 importlib 模組;此模組提供了用於處理其他模組的實用程式。file_path作為execute_python_file()函式的引數;它表示所需 Python 檔案的路徑。我們使用importlib.import_module()將指定的 Python 檔案作為模組匯入。如果碰巧找不到該檔案,則會發出相應的錯誤訊息。

示例

import importlib

def execute_python_file(file_path):
   try:
      module_name = file_path.replace('.py', '')  # Remove the '.py' extension
      module = importlib.import_module(module_name)
   except FileNotFoundError:
      print(f"Error: The file '{file_path}' does not exist.")
   except ModuleNotFoundError:
      print(f"Error: The module '{module_name}' could not be found.")
   except ImportError as e:
      print(f"Error: Unable to import '{module_name}': {e}")

Python 提供了多種方法來從另一個 Python 檔案執行一個 Python 檔案,每種方法都有其獨特的優勢和用例。無論您是喜歡os.system()subprocess.run()exec()還是importlib.import_module(),您都可以根據需要選擇多種選項來執行從另一個 Python 檔案執行 Python 檔案的任務。

在您的 Python 學習之旅中,在選擇最適合指令碼執行的方法時,請考慮專案的具體要求。利用 Python 的靈活性和強大功能,輕鬆地與程式碼的不同元件進行互動。

更新於: 2023-09-02

57K+ 瀏覽量

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.