Python 中的 subprocess.check_output
subprocess
模組是 Python 的一個組成部分,有助於實現並行程式設計。該模組可以生成新程序並使用命令列工具控制的程式。
它儲存了不同的函式,可以幫助我們通過命令列工具執行命令。一個這樣的函式是 Python 中的 subprocess.check_output()
函式。
本教程將演示 Python 中的 subprocess.check_output()
函式。
在 Python 中使用 subprocess.check_output()
這個函式是在 Python 2.7 中引入的。我們可以使用它在命令提示符下執行帶有 Python 引數的命令。
subprocess.check_output()
函式將以位元組形式返回給定命令的輸出。如果函式返回非零程式碼,則會引發 CalledProcessError
物件。
CalledProcessError
物件有兩個屬性。這些是 returncode
和 output
屬性。
該函式的一個簡單示例如下所示。
import subprocess
print(subprocess.check_output(["echo", "Sample Message"], shell=False))
輸出:
b'Sample Message\n'
我們在上面的例子中執行 echo
命令來顯示一條訊息。返回的輸出是帶有所需訊息的位元組字串。
這個函式有幾個引數。如命令中所見,我們可以在函式中為命令提供其引數。
除此之外,我們還有 stdin
、stderr
、shell
和 universal_newlines
引數。
前三個引數是標準輸入、輸出和錯誤檔案控制代碼。我們可以將它們的值指定為 PIPE
物件。
如前所述,subprocess
模組建立新的子程序。PIPE
常量從父程序傳送或接收資訊。
shell
引數可以是 True
或 False
。如果設定為 True
,該命令將通過 shell 執行。
但是,不建議通過 Python 通過 shell 執行命令。當從不受信任的來源讀取輸入時,這可能會帶來嚴重的安全風險,這可能會引發 shell 注入等安全威脅。
如果 shell
引數設定為 True
,我們可以使用 pipes.quotes()
函式在傳遞的字串中轉義 shell 的空格和元字元。
universal_newlines
引數設定為 True
,然後作為標準輸入、輸出和錯誤提供的物件以文字模式開啟。在其他函式中,相同的引數與具有 text
引數名稱的別名一起使用。
Python 3.5 引入了一個名為 subprocess.run()
的新函式。這個函式比傳統的 subprocess.check_output()
方法執行命令更受歡迎;它返回一個 CompletedProcess
物件。
subprocess.run()
函式也接受許多引數,其中大部分在 subprocess.check_output()
方法中不可用。大多數這些引數都是通過介面傳遞的。
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn