如何在 subprocess 指令中使用管道
使用 subprocess 模組時,可能會出現需要使用管道來連接多個命令。本問題探討了使用以下指令使用subprocess.check_output() 的挑戰:
ps -A | grep 'process_name'
答案
要使用帶有子程序的管道,shell=True可以採用論證。但是,使用 shell=True 會帶來安全問題,應謹慎對待。更好的方法是分別建立ps 和grep 進程,並將輸出從一個進程傳輸到另一個進程:
ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE) output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout) ps.wait()
在提到的特定場景中,更簡單的解決方案是呼叫subprocess. check_output(('ps ', '-A')) 並在輸出上使用str.find。
以上是如何使用 Python 的「subprocess」模組正確傳輸指令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!