將subprocess 與Pipes 結合使用
利用subprocess.check_output() 可以成為將指令傳送到一起的寶貴工具,從而允許進行寶貴工具複雜的處理。但是,出於安全考慮,強烈建議不要使用 shell=True 參數來促進管道傳輸。
為了更安全、更穩定的方法,請考慮為每個命令建立單獨的進程並在它們之間傳輸輸出。以下是一個範例:
import subprocess # Create a subprocess for the ps command ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE) # Create a subprocess for the grep command output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout) # Wait for the ps process to finish ps.wait() # Process the grep output (if necessary)
或者,您可以透過使用str.find 在subprocess.check_output(('ps', '-A')) 的輸出中搜尋「process_name」來完全避免管道傳輸:
import subprocess # Run the ps command and capture the output output = subprocess.check_output(('ps', '-A')) # Search for "process_name" in the output if "process_name" in output: # Take appropriate action
透過遵守這些準則,您可以有效地利用具有子程序模組的管道,同時保持安全性和穩定性。
以上是如何透過 Python 的「subprocess」模組安全地使用管道?的詳細內容。更多資訊請關注PHP中文網其他相關文章!