2012-04-05 3 views
2

가능한 중복 :
Running a process in pythonw with Popen without a console
How do I eliminate Windows consoles from spawned processes in Python (2.7)?파이썬

내가 파이썬 2.7를 사용하고 IDLE 내에서 파이썬 스크립트를 실행하고 있습니다.

실행중인 명령은 빠른 작업을 수행하는 간단한 exe 프로그램입니다. 내가 겪고있는 문제는 외부 명령이 파이썬 내에서 호출 될 때마다 콘솔이 생성되고 내 화면에서 깜박이고 포커스를 받으면서 다양한 스크립트를 실행하는 동안 내 PC를 사용하지 못하게합니다. 내가 파이썬 내에서 그들을 호출 오전 방법

예를 들면 다음과 같다

: 솔루션을 검색

result = call(["Commands\Set.exe", str(i), ARG2]) 
check_output(["Commands\Read.exe", ARG2]) 

나는 다음 명령

를 확인하기 위해 다음과 같은

shell=True 

을 추가 가로 질러왔다

check_output(["Commands\Read.exe", ARG2], shell=True) 

그러나 아직 콘솔은 입니다.은 외부 명령이 호출 될 때마다 나타납니다.

답변

4

여기에는 두 가지 문제가있을 수 있습니다. 첫째로, 파이썬 스크립트가 .pyw 확장자를 가지고 있다면 그들은 콘솔을 사용하지 않는 pythonw와 연결될 것입니다 *. 그러나 shell = True는 콘솔을 생성합니다 *. Pedantically, 그것은 콘솔 창입니다, 도스 프롬프트가 아니다 *

import subprocess 
proc = subprocess.Popen('hello.py', creationflags=subprocess.SW_HIDE, shell=True) 
proc.wait() 

: 당신은 프로그램을 실행하고 콘솔을 숨길 필요가있다. DOS - 디스크 운영 체제 - IBM 메인 프레임 OS였습니다. MS-DOS 또는 PC-DOS 명령 줄 기능은 콘솔 프로그램이며 콘솔 창을 사용하는 cmd.exe (Windows 셸)에 의해 미러링되었습니다 (많은 추가 기능이 있음). 숨길 필요가있는 콘솔 창입니다.

+0

ok check_output 라인에 createflags = subprocess.SW_HIDE, shell = True를 추가하려고 시도했지만 아직 콘솔 * 창이 표시됩니다. – smashtastic

+0

다른 댓글 ... 내 질문을 반영하도록 업데이트했습니다. 콘솔 사용법 ... "C : \>"는 실제로 다른 프롬프트에 다른 프롬프트를주는 다른 콘솔에 비해 prompt이기 때문에 completenesss는 "dos 프롬프트가있는 콘솔 창"이라고 말할 수 있습니다. >>>> 파이썬에서 ... 지금 나는 그것이 정말로 현학적 인 것 같아요. – smashtastic

+0

btw python 스크립트가 아닌 exe 파일을 호출하고 있습니다 .... 질문이 업데이트되었습니다. – smashtastic

1

subprocess.Popen() 클래스 'constructor'의 startupinfo 매개 변수를 사용해야합니다. 당신이 원하는 모든 콘솔 창을 숨길 경우

startupinfo = subprocess.STARTUPINFO() 
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW 
startupinfo.wShowWindow = subprocess.SW_HIDE 
subprocess.Popen(command, startupinfo=startupinfo) 

당신은shell=True 필요하지 않습니다 ; 대답 this 답변을 참조하십시오.