在 Python 中執行 Bash 命令

Muhammad Waiz Khan 2023年1月30日 2021年2月28日
  1. 在 Python 中使用 subprocess 模組的 run() 方法執行 Bash 命令
  2. 在 Python 中使用 subprocess 模組的 Popen() 方法執行 Bash 命令
在 Python 中執行 Bash 命令

本教程將解釋在 Python 中執行 bash 命令的各種方法。Bash 是 Linux 和 Unix 作業系統中使用的 shell 或命令語言直譯器。而 bash 命令是使用者向作業系統發出的執行特定任務的指令,如 cd 命令改變當前目錄,mkd 命令新建目錄,ls 命令列出目錄中的檔案和子目錄等。

在 Python 中使用 subprocess 模組的 run() 方法執行 Bash 命令

subprocess 模組的 run() 方法接受以字串形式傳來的命令,為了獲得輸出或命令的輸出錯誤,我們應該將 stdout 引數和 stderr 引數設定為 PIPErun 方法返回一個完成的程序,包含 stdoutstderrreturncode 作為屬性。

該程式碼示例程式碼演示瞭如何使用 run() 方法在 Python 中執行 bash 命令。

from subprocess import PIPE

comp_process = subprocess.run("ls",stdout=PIPE, stderr=PIPE)
print(comp_process.stdout)

在 Python 中使用 subprocess 模組的 Popen() 方法執行 Bash 命令

subprocess 模組中的 Popen() 方法與 run() 方法功能類似,但使用起來比較麻煩。Popen() 方法與 run() 方法不同,它不返回一個已完成的程序物件作為輸出,而且 Popen() 方法啟動的程序需要單獨處理,使用起來比較棘手。

Popen() 方法返回的不是已完成的程序,而是一個程序物件作為輸出。返回的程序需要使用 process.kill()process.terminate() 方法來殺死。

run() 方法一樣,我們需要設定 Popen()stdoutstderr 引數來獲取命令的輸出和錯誤。而輸出和錯誤可以通過返回的程序物件使用 process.communicate 方法進行訪問。

下面的程式碼示例演示瞭如何使用 Popen() 方法執行 bash 命令,以及如何在 Python 中獲取 stdoutstderr 值,然後殺死程序。

from subprocess import PIPE

process = subprocess.Popen("ls",stdout=PIPE, stderr=PIPE)
output, error = process.communicate()
print(output)
process.kill