나는 여러 단계의 프로세스를 거쳤습니다. 기본적으로, stdout을 한 파일에 쓰고 (다음 단계로 넘어 가기 위해) subprocess.call (또는 이와 동등한 것)을 호출하여 stdout과 stderr를 적절하게 시간순으로 다른 파일에 씁니다. 사용자).파이썬 하위 프로세스가 파일간에 임의로 출력을 분할합니다.
나는이 같은 서명으로 함수를 작성 할 수 있어야한다 : (I가 임시 파일로 작업 할 수 있지만, 바람직하게 파일 같은 객체) 후자의 두 인수는 파일입니다
def CallProcess(command, outonlyfile, interleavedfile)
등 그것은해야
foo:
out1
out2
bar:
out1
err1
out2
err2
: 출력
import tempfile
foo = tempfile.TemporaryFile('wb+')
bar = tempfile.TemporaryFile('wb+')
CallProcess('echo out1; echo err1 >&2; echo out2; echo err2 >&2', foo, bar)
foo.seek(0)
bar.seek(0)
print('foo:')
print(foo.read())
print()
print('bar:')
print(bar.read())
을 그리고 그것은해야 : 난 너무로 호출 할 수 플랫폼에 구속력이 없으므로 (tee
또는 그와 같은 전화를 걸 수 없음) 그것은 바람직하게 순수한 파이썬이어야합니다.
여러 개의 파일 핸들을 출력하는 Tee 오브젝트를 생성 해 보았습니다.하지만 불행히도 subprocess.call은 파일과 같은 오브젝트를 허용하지 않고 실제 파일 만 허용합니다.
그래, 그럴 필요가 있을지 모르겠다. 나는 깨끗한 해결책을 원했다. 감사. – Taywee