我有,通過一個POPEN調用運行外部程序的GUI程序:運行與POPEN pythonw的過程沒有一個控制檯
p = subprocess.Popen("<commands>" , stdout=subprocess.PIPE , stderr=subprocess.PIPE , cwd=os.getcwd())
p.communicate()
但是控制檯彈出,無論我做什麼我(也試過把NUL傳遞給文件句柄)。有沒有辦法做到這一點,而沒有得到我打電話來釋放它的控制檯的二進制文件?
我有,通過一個POPEN調用運行外部程序的GUI程序:運行與POPEN pythonw的過程沒有一個控制檯
p = subprocess.Popen("<commands>" , stdout=subprocess.PIPE , stderr=subprocess.PIPE , cwd=os.getcwd())
p.communicate()
但是控制檯彈出,無論我做什麼我(也試過把NUL傳遞給文件句柄)。有沒有辦法做到這一點,而沒有得到我打電話來釋放它的控制檯的二進制文件?
從here:
import subprocess
def launchWithoutConsole(command, args):
"""Launches 'command' windowless and waits until finished"""
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
return subprocess.Popen([command] + args, startupinfo=startupinfo).wait()
if __name__ == "__main__":
# test with "pythonw.exe"
launchWithoutConsole("d:\\bin\\gzip.exe", ["-d", "myfile.gz"])
啊哈!謝謝。我甚至沒有注意到那裏的選項... – sbirch 2009-11-28 22:03:22
您可能能夠只是做subprocess.Popen([command], shell=False)
。
這就是我使用反正。節省你所有的廢話設置標誌和什麼。 一旦命名爲.pyw或運行pythonw它不應該打開一個控制檯。
shell = False已經是默認了,所以我沒有看到這是要解決什麼問題:https://docs.python.org/2/library/subprocess .html#subprocess.Popen – totaam 2016-03-26 04:52:24
'shell = False'不會改變任何東西,解決方案是使用'shell = True'和'.pyw'文件。 – ZeroFunter 2016-10-13 21:34:54
只是做subprocess.Popen([command], shell=True)
什麼'pyw'文件?他需要運行一個外部應用程序。 – 2017-09-07 15:41:23
這工作就像一個魅力。你不需要'.pyw'文件。 – vy32 2017-09-26 13:36:26
這很好地工作在WIN32API。其他解決方案不適合我。
import win32api
chrome = "\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\""
args = "https://stackoverflow.com"
win32api.WinExec(chrome + " " + args)
這些命令通常會在控制檯中運行嗎?你是否試圖運行另一個沒有控制檯的GUI程序? – 2009-11-28 21:56:30