하위 프로세스에서 원하는 작업을 수행하는 데 문제가 있습니다. 입력 파일을 가져 오는 테스트 도구가 있습니다. testtool.exe -f를 실행하고 명령 프롬프트에서 실행할 때 이와 같은 출력을 생성합니다.Popen을 사용하여 한 스트림에서 모든 것을 출력합니다.
12:30:46 INFO Output- Processing arguments
12:30:46 INFO Output- Arguments ok
12:30:46 INFO Output- Doing something
12:30:46 INFO Output- More Stuff
12:30:03 ERROR Output- Error found
12:30:03 INFO Output- Finished
12:30:03 INFO Output- Exiting
그래서이 도구를 python Python 3.4.3에서 실행하려면 subprocess를 사용하려고합니다. 예를 들어 ...
proc = subprocess.Popen(command, stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=True).communicate()[0].decode('utf-8')
for i in proc.splitlines():
print("> {0}".format(i))
불행히도 출력에 'ERROR'행이 없습니다. 나는 그것이 내가 그것에 대한 추가 검증을 할 필요가 있기 때문에 내가 명령 프롬프트에서 얻을 줄 정확히 출력을하고 싶다. 얼마나 많은 오류 라인이 나타나는 지, 출력에 나타나는 오류 라인 수. 그래서 ERROR와 INFO 라인을 다른 스트림으로 나누는 것은 나에게 적합하지 않습니다.
> 12:30:46 INFO Output- Processing arguments
> 12:30:46 INFO Output- Arguments ok
> 12:30:46 INFO Output- Doing something
> 12:30:46 INFO Output- More Stuff
> 12:30:03 INFO Output- Finished
> 12:30:03 INFO Output- Exiting
나는 또한
proc = subprocess.Popen(command, stderr=subprocess.PIPE, stdout=STDOUT, shell=True).communicate()[0].decode('utf-8')
을 시도하고이 .. 또한
proc = subprocess.Popen(command, stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
proc_data = proc.communicate()
for i in proc_data[0].splitlines():
print ("INFO> {0}".format(i))
for i in proc_data[1].splitlines():
print ("ERROR> {0}".format(i))
내 최신 환생 오류 선이 표시되지 않습니다. 그것의 어딘가에 잃어버린 것 같은?
이유는 무엇입니까? – marisbest2
왜 다른 곳에서 실행하고 하나의 명령으로 서브 프로세스로 전달할 명령을 작성하고 있습니다. 필자는 명령을 실행 가능 + args로 분할하고 싶지 않으면 shell = True를 사용해야한다는 인상 아래에있었습니다. – John
나는 shell = True를 사용하는 것이 일반적으로 길지 않다는 말을 항상 듣는다. 그것 없이는 작동합니까? – marisbest2