首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Python (2.7)中生成的进程中消除Windows控制台?

如何从Python (2.7)中生成的进程中消除Windows控制台?
EN

Stack Overflow用户
提问于 2010-08-02 18:42:00
回答 1查看 2.7K关注 0票数 6

可能重复: 使用没有控制台的Popen运行pythonw中的进程

我在Windows上使用python2.7来使用dcraw和PIL自动化批处理原始转换。

问题是,每当我运行dcraw (每隔几秒钟就会发生一次),我就会打开一个窗口控制台。如果我使用.py来运行脚本,这就不那么烦人了,因为它只打开主窗口,但我更愿意只显示GUI。

我是这样参与的:

代码语言:javascript
复制
args = [this.dcraw] + shlex.split(DCRAW_OPTS) + [rawfile]
proc = subprocess.Popen(args, -1, stdout=subprocess.PIPE)
ppm_data, err = proc.communicate()
image = Image.open(StringIO.StringIO(ppm_data))

感谢里卡多·雷耶斯

在2.7中,您需要从STARTF_USESHOWWINDOW获得_subprocess (如果您想要一些可能不太容易改变的东西,也可以使用pywin32 ),因此对于后人:

代码语言:javascript
复制
suinfo = subprocess.STARTUPINFO()
suinfo.dwFlags |= _subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(args, -1, stdout=subprocess.PIPE, startupinfo=suinfo)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-02 20:24:23

调用Popen时,需要设置startupinfo参数。

下面是一个来自Activestate.com配方的例子

代码语言:javascript
复制
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"])
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3390762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档