development

os.system () 또는 subprocess.call ()을 사용할 때 콘솔을 숨기려면 어떻게해야합니까?

big-blog 2021. 1. 6. 20:43
반응형

os.system () 또는 subprocess.call ()을 사용할 때 콘솔을 숨기려면 어떻게해야합니까?


나는 아래와 같은 몇 가지 진술을 썼다.

os.system(cmd) #do something
subprocess.call('taskkill /F /IM exename.exe')

둘 다 콘솔이 나타납니다.

콘솔 팝업을 막을 수 있습니까?


이 프로세스 STARTUPINFO는 콘솔 창을 숨길 수 있습니다.

si = subprocess.STARTUPINFO()
si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
#si.wShowWindow = subprocess.SW_HIDE # default
subprocess.call('taskkill /F /IM exename.exe', startupinfo=si)

또는 생성 플래그를 설정하여 창 생성을 비활성화합니다.

CREATE_NO_WINDOW = 0x08000000
subprocess.call('taskkill /F /IM exename.exe', creationflags=CREATE_NO_WINDOW)

위는 여전히 콘솔 I / O에 유효한 핸들이있는 콘솔 프로세스입니다 ( GetFileType에서 반환 된 핸들 을 호출 하여 확인 GetStdHandle). 창이 없으며 부모의 콘솔이 있으면 상속하지 않습니다.

아이에게 콘솔이 전혀 없도록 강요하여 한 걸음 더 나아갈 수 있습니다.

DETACHED_PROCESS = 0x00000008
subprocess.call('taskkill /F /IM exename.exe', creationflags=DETACHED_PROCESS)

이 경우 자식의 표준 핸들 (예 :) GetStdHandle은 0이지만 열려있는 디스크 파일이나 subprocess.DEVNULL(3.3) 또는 subprocess.PIPE.


shell=True하위 프로세스 호출에 인수를 추가 합니다.

subprocess.call('taskkill /F /IM exename.exe', shell=True)

또는 기다릴 필요가없는 subprocess.Popen경우 subprocess.call.

subprocess.Popen('taskkill /F /IM exename.exe', shell=True)

확장자를 .py에서 .pyw로 변경하십시오.

기본적으로 Python 사용자 인터페이스 파일입니다. 따라서 명령 줄없이 새 창이 열립니다. 이 링크 확인 (filext.com/file-extension/PYW)


시도해보십시오 subprocess.Popen(["function","option1","option2"],shell=False).

참조 URL : https://stackoverflow.com/questions/7006238/how-do-i-hide-the-console-when-i-use-os-system-or-subprocess-call

반응형