서브 프로세스에있는 모든 것을 읽었습니다.하지만 뭔가 빠져 있다고 생각합니다.파이썬에서 외부 명령으로 파이핑 데이터
파이썬 스크립트에서 생성 된 목록에서 데이터 스트림을 읽고 해당 프로그램의 결과를 파일에 쓰는 유닉스 프로그램을 실행할 수 있어야합니다. bash 프롬프트에서 나는이 모든 일을 아무런 문제없이 해왔지만 지금은이 단계에 오기 전에 일부 바이너리 파일과 많은 데이터를 미리 처리하는 파이썬 스크립트 내에서 이것을 시도하고있다.
가import sys
from pylab import *
from subprocess import *
from shlex import split
# some arbitrary x,y points
points = [(11,31),(13,33),(15,37),(16,35),(17,38),(18,39.55)]
commandline = 'my_unix_prog option1 option2 .... > outfile'
command = split(commandline)
process = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
print process.communicate(str(points))
이것은 떠들썩한 파티에서 실행되는 것 인 방법이다 :
echo "11 31
13 33
15 37
16 35
17 38
18 39.55" | my_unix_prog option1 option2 .... > outfile
방법 데이터는 유닉스 음식물로 공급된다
모든 전처리를 포함하지 않는 단순한 예를 살펴하자 또한 중요하다. 공백으로 구분 된 두 개의 열로 형식을 지정해야한다.
'명령 '에서 출력을'outfile'으로 리디렉션했지만'communicate'를 사용하여 프로그램으로 읽으려고합니다. 출력물을 어디로 보내시겠습니까? –
'>'를 사용하면 출력을 파일로 리디렉션 할 수 없습니다.이 답변을 참조하십시오 : http://stackoverflow.com/questions/8902206/subprocess-popenio-redirect – Dhara