使用subprocess.Popen隐藏控制台

时间:2014-08-04 15:59:34

标签: python windows macos subprocess

我是subprocess.Popen的新手并且一直在阅读文档。我只是想让我的进程不打开控制台。我需要哪些参数?

stdout=subprocess.PIPE,
shell=False,
creationflags = CREATE_NO_WINDOW

这只适用于Windows吗?我是否需要做一些不同的事情才能在Mac上运行?

谢谢!

1 个答案:

答案 0 :(得分:7)

stdout=subprocess.PIPE对控制台是否出现没有影响。它只是确定是否在您可以读取的管道中捕获子进程的stdout

shell=False是所有subprocess命令的默认设置,因此您无需提供该命令。它告诉subprocess是否使用shell来执行提供的命令。它对控制台是否出现在任何平台上没有任何影响。

creationflags = CREATE_NO_WINDOW确实会在Windows上隐藏控制台(在Windows 7上测试,假设为CREATE_NO_WINDOW == 0x08000000)。但是,在非Windows平台上使用它会导致错误。您应该引用this question以获取仅在Windows上提供creationflags的方法,以及隐藏控制台的替代方法。

请注意,出现的控制台应该只是Windows上的一个问题。在Posix平台上,运行子进程时不应出现控制台。