반응형
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)
.
반응형
'development' 카테고리의 다른 글
인터넷에서 localhost에 액세스 (0) | 2021.01.06 |
---|---|
sqrt (또는 기타 수학 함수)에 대한 정의되지 않은 참조 (0) | 2021.01.06 |
jQuery를 사용하여 형제 요소를 어떻게 선택합니까? (0) | 2021.01.06 |
Objective-C 프로토콜 전달 선언 (0) | 2021.01.06 |
인덱스 추가 (db_index = True) (0) | 2021.01.06 |