2010-08-02 5 views
5

가능한 중복 : 나는 dcraw를하고 PIL을 사용하여 배치 RAW 변환을 자동화하기 위해 Windows에서 파이썬 2.7을 사용하고
Running a process in pythonw with Popen without a consolePython (2.7)에서 생성 된 프로세스에서 Windows 콘솔을 제거하려면 어떻게합니까?

.

문제는 dcraw (매 2 초마다 발생)를 실행할 때마다 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) 

답변

6

Popen을 호출 할 때 startupinfo 매개 변수를 설정해야합니다.

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"]) 
: 여기

Activestate.com Recipe에서 예제
관련 문제