在Python中,你可以使用subprocess
模塊來調用外部命令。subprocess
模塊提供了一個簡單一致的方式來啟動新進程,連接它們的輸入/輸出/錯誤管道,并獲取它們的返回碼。
以下是一個簡單的例子,展示了如何在Python中使用subprocess
模塊調用外部命令:
import subprocess
# 調用外部命令并獲取輸出
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 打印輸出結果
print("stdout:", result.stdout)
print("stderr:", result.stderr)
print("returncode:", result.returncode)
在這個例子中,我們使用subprocess.run()
函數調用了ls -l
命令。stdout=subprocess.PIPE
和stderr=subprocess.PIPE
參數表示我們希望捕獲命令的標準輸出和標準錯誤。text=True
參數表示我們希望以文本形式接收輸出,而不是字節形式。
subprocess.run()
函數返回一個CompletedProcess
對象,它包含了命令的輸出、錯誤和返回碼等信息。
如果你需要更多的控制,例如實時讀取輸出或與子進程進行交互,你可以使用subprocess.Popen
類。以下是一個使用Popen
的例子:
import subprocess
# 創建一個子進程
process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 實時讀取輸出
for line in process.stdout:
print(line, end='')
# 等待子進程完成并獲取返回碼
returncode = process.wait()
print("returncode:", returncode)
在這個例子中,我們使用subprocess.Popen
創建了一個子進程,并通過process.stdout
實時讀取輸出。process.wait()
方法會等待子進程完成,并返回其返回碼。