介紹
subprocess是Python中一個重要的標準庫,提供了用於創建新進程、連接到其管道、讀取其輸出等功能的支持。它允許在Python中輕鬆地執行外部命令。
正文
一、subprocess模塊的基礎使用
subprocess模塊允許我們在Python程序中執行外部命令。最簡單的方法是使用subprocess.call()函數。它的基本語法如下:
import subprocess
subprocess.call("command")
其中,”command”是需要執行的命令。嘗試運行一些基本的命令:
subprocess.call("ls")
subprocess.call("dir")
二、Popen函數的運用
儘管subprocess.call()函數可以滿足大多數需要執行命令的場景,但是在某些情況下,我們需要更多的控制權。使用Popen函數,可以啟動一個新的進程,並從其標準輸出中讀取數據。下面是Popen函數的基本使用示例:
import subprocess
process = subprocess.Popen("command", stdout=subprocess.PIPE, shell=True)
(output, err) = process.communicate()
print(output)
其中,process變量存儲了Popen對象, stdout參數指定將命令的標準輸出通過管道重定向回Python程序。通常使用的PIPE也是常見的,且是最常見的輸出重定向方式。之後,communicate()函數會讀取子進程的輸出,並返回一個二元組,其中包括標準輸出和標準錯誤輸出。最後,在Python程序中輸出標準輸出。
三、通過subprocess模塊執行系統命令的進階用法
除了基本使用和使用Popen函數之外,還有其他一些進階使用方法,在需要同時執行多個命令且需要捕獲它們的輸出時特別有用。下面的代碼樣例演示了如何在Windows中將兩個命令連接起來:
import subprocess
cmds = ["echo 'Hello World'", "exit 1"]
output = ""
for cmd in cmds:
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
(temp_output, err) = process.communicate()
output += temp_output.decode()
print(temp_output.decode())
print(output)
該代碼將多個命令組合在一起,並且Python程序也可以讀取每個命令的輸出並在程序中顯示結果。
小結
執行外部命令是許多編程項目中必不可少的一部分,而Python的subprocess模塊為執行這些命令提供了許多功能。通過本文,您了解了如何使用subprocess來調用命令行應用程序,以及它的一些高級用法。 請記住,在使用subprocess執行命令時,請始終在不信任的輸入上使用適當的參數。在Python中,保持應用程序的安全永遠是第一要務。
原創文章,作者:QSKK,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/140738.html