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

2024-09-28 20:56:52 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
Running a process in pythonw with Popen without a console

我在Windows上使用python2.7,使用dcraw和PIL来自动执行批处理RAW转换。在

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

我是这样想的:

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中,对该配方进行了小修改,在2.7中,您似乎需要从_subprocess中获得{}(如果您想要一些不太容易更改的东西,也可以使用pywin32),因此对于后代:

^{pr2}$

Tags: indatawithargsprocprocessrunningsubprocess
1条回答
网友
1楼 · 发布于 2024-09-28 20:56:52

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

下面是一个来自Activestate.com Recipe的示例:

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"])

相关问题 更多 >