長期潛伏者,第一次海報。蟒蛇子進程終端mac osx
我知道整個interweb中有很多使用子進程的例子,但是我還沒有找到一個解釋我需要用來生成一個新的終端窗口併發送命令的步驟。有大量的帖子提供了通過直接子進程調用來啓動工具和腳本的解決方法,但是我還沒有發現任何實際回答瞭如何正確地向終端發送命令的原始問題。
在我的情況下,我需要打開一個新的終端窗口,然後將路徑發送到特定版本的應用程序,最後到我希望在該應用程序中打開的文件的路徑。
我知道如何使用子進程直接調用所需的應用程序(無需打開可見終端),如何使用子進程打開新的終端,以及如何調用應用程序路徑或文件路徑(還沒有使用--args for open()或者我發現的任何其他解決方法來讓兩者一起執行。
一旦打開它,我一直無法發送終端命令。以下是打開終端的新實例併發送ls的簡單版本,不起作用。
from subprocess import Popen, PIPE, STDOUT
p = Popen(['open', '-a', 'Terminal', '-n'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
output = p.communicate(input='ls')
print(output)
這很可能是一個微不足道的問題,我只是失去了一些東西,但我一直無法找到的信息或一個例子,說明我需要什麼,我開始感到沮喪,所以我我想我會尋求幫助。
任何援助非常感謝! TIA
這很不容易,就像你想的那樣。終端打開它自己的子進程(例如bash)並直接與它們進行通信。向終端的stdin發送任何內容都不會進入其他進程。您可能錯誤地處理了這個問題。 – korylprince
謝謝korylprince,我會試着去改變它。欣賞迴應。 – Glenn