Subprocess 模組中 'shell=True' 的意義
subprocess 模組方便各種流程的執行。然而,理解「shell=True」參數的作用至關重要。
考慮下面的程式碼片段:
callProcess = subprocess.Popen(['ls', '-l'], shell=True)
callProcess = subprocess.Popen(['ls', '-l']) # without shell
兩個程式碼區塊都執行「ls -l」指令,但第一個程式碼中「shell=True」的存在會產生重大影響。當 'shell=True' 時,指令會透過系統的 shell 執行(在 POSIX 上由 SHELL 環境變數指定,在 Windows 上由 cmd.exe 指定)。相較之下,如果沒有 'shell',則直接啟動進程。
使用 Shell 的好處:
不使用的好處Shell:
推薦做法:
一般情況下,建議使用'shell=False',原因如下:
因此,除非明確需要環境變量擴展或文件glob 擴展,否則建議使用'shell=False' 以提高安全性和效率。
以上是你應該將 `shell=True` 與 Python 的 `subprocess` 模組一起使用嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!