我可能根本沒有正確理解這一點,但我試圖讓Python程序與運行命令的子進程接口,就好像在Linux shell上一樣。Python中的永久終端會話
例如,我希望能夠運行「CD /」,然後「在程序稍後pwd然後得到‘/’。
我目前正在使用subprocess.Popen和溝通()方法來發送和接收數據第一個命令,與Popen構造函數一起發送,運行良好並給出正確的輸出,但是我不能通過通信發送另一個命令(輸入=「pwd」)。
我的代碼到目前爲止:
from subprocess i
term=Popen("pwd", stdout=PIPE, stdin=PIPE)
print(flush(term.communicate()))
term.communicate(input="cd /")
print(flush(term.communicate(input="pwd")))
有沒有更好的方法來做到這一點?謝謝。
另外,我運行的Python 3
使用'os.chdir'方法。 – Keith
那麼這是否意味着我必須爲每個命令創建一個新的Popen對象? – novabrahm
不是。但在這種情況下,'pwd'只是輸出它的輸出並立即退出。沒有一個正在運行的進程與之通信。你確實需要爲每個命令使用fork/exec,這是普通的shell行爲,除非正在構建管道。在那種情況下,你確實需要一個Popen來處理每個命令。 – Keith