python - 如何从 Python (2.7) 中生成的进程中删除 Windows 控制台?

标签 python windows subprocess popen

<分区>

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

我在 Windows 上使用 python 2.7 使用 dcraw 和 PIL 自动进行批量 RAW 转换。

问题是每当我运行 dcraw(每隔几秒发生一次)时,我都会打开一个 Windows 控制台。如果我使用 .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 中,您似乎需要从 _subprocess 获取 STARTF_USESHOWWINDOW(如果您也可以使用 pywin32想要一些不太容易改变的东西),所以为了后代:

suinfo = subprocess.STARTUPINFO()
suinfo.dwFlags |= _subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(args, -1, stdout=subprocess.PIPE, startupinfo=suinfo)

最佳答案

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

关于python - 如何从 Python (2.7) 中生成的进程中删除 Windows 控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3390762/

相关文章:

python matplotlib 在axes.lines上迭代得到错误的长度

python - 使用列表作为列表框变量而不是元组

windows - 在Windows Hyper-V容器中运行不受信任的代码

python - 在 Windows 7 机器上安装 MySQL-python 时出错

windows - 尝试使用媒体查询仅针对 Windows 上的 Chrome

python - SCP 通过 Python 子进程 Popen : "Identity File not accessible"

python:从很长的div类输出中选择特定部分

python - Lua和Python在十六进制转换方面的区别

python - 如何在 django python 中通过子进程运行 unoconv?

python - 测量外部程序的用户+系统运行时间