我想用子流程打開圖像,以便用戶可見,然後關閉圖像使其消失。關閉具有子流程的圖像
這個問題以前已經問過,但是我發現的答案並沒有爲我工作。以下是我已經檢查:
Killing a process created with Python's subprocess.Popen()
How to terminate a python subprocess launched with shell=True
How can I close an image shown to the user with the Python Imaging Library?
我需要的代碼打開一個圖像(預覽(可選),默認情況下在我的Mac),等一下,然後關閉圖像。
openimg = subprocess.Popen(["open", mypath])
time.sleep(1)
openimg.terminate()
openimg.kill()
一切都告訴我要終止()和殺死(),但仍然沒有關閉圖像。
這不一定要使用預覽,我也願意聽取其他選項。
編輯:我已經試過另外下面的代碼,仍然沒有成功
print('openimg\'s pid = ',openimg.pid)
os.kill(openimg.pid, signal.SIGKILL)
我沒有一個Mac來檢查,但我似乎記得'open'是異步的 - 它產生了一個預覽過程(或任何它啓動的應用程序)並立即退出。所以等到你的Python代碼暫時休眠了一段時間後,「open」進程就不再存在了。如果是這樣的話,我想你需要找到一些方法將信號發送到進程「open」啓動。作爲一個測試,如果你將'-W'選項傳遞給'open'(可能還有'-n'),那麼它是否工作? –
感謝@DavidZ的幫助,我有點新,我不知道如何在代碼中包含'-W'或'-n'。我一直收到無效語法或文件未找到錯誤。你能給我一個它的樣子嗎? – Drake491
讓我只寫一個答案。 –