在Python中,可以使用subprocess
模塊來處理外部命令及其子進程的輸入輸出
import subprocess
# 創建一個子進程,運行外部命令(這里是運行echo命令)
# 通過stdin, stdout, stderr參數來捕獲子進程的輸入輸出
process = subprocess.Popen(["echo", "Hello from the child process!"],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
# 使用communicate()方法來等待子進程完成,并獲取其輸出
stdout_data, stderr_data = process.communicate()
# 將輸出從字節轉換為字符串
stdout_str = stdout_data.decode("utf-8")
stderr_str = stderr_data.decode("utf-8")
print("子進程輸出:", stdout_str)
print("子進程錯誤:", stderr_str)
# 獲取子進程的返回碼
return_code = process.returncode
print("子進程返回碼:", return_code)
在這個示例中,我們使用subprocess.Popen
創建了一個子進程來運行echo
命令。通過設置stdin
、stdout
和stderr
參數為subprocess.PIPE
,我們可以捕獲子進程的輸入輸出。然后,我們使用communicate()
方法等待子進程完成,并獲取其輸出。最后,我們將輸出從字節轉換為字符串,并打印出來。
注意:在實際應用中,你可能需要根據子進程的需求來調整stdin
、stdout
和stderr
參數的值。例如,你可以將stdin
設置為None
以便讓子進程從終端接收輸入,或者將stdout
和stderr
設置為subprocess.DEVNULL
以便忽略子進程的輸出。