for 루프의 각 인스턴스는 추가 처리를 위해 다른 스크립트에서 캡처해야하는 하나의 바이너리 파일의 내용을 출력합니다. 예를 들어 :파이썬 for 루프를 다른 스크립트로 반복 한 파이프 출력
script1.py
filename = glob.glob('*.txt')
for i in range(len(filename)):
with open(filename[i], 'rb') as g:
sys.stdout.write(g.read())
는 script2.py
from subprocess import call
script = "cat > test.fil"
call(script,shell=True)
는 명령 :이 명령을 실행하면
python script1.py | python script2.py
, 그것은 대기 모든 반복을 완료하려면 출력을 script2.py에 파이프하기 전에. 나는 이것을 일괄 적으로하고 싶다. 예를 들어, 한 바이너리 파일의 데이터가 stdout으로 푸시되면, script2.py를 실행하십시오.
script2.py는 script1.py에서 호출 할 수 없습니다. 두 스크립트는 서로 다른 도커 컨테이너에서 실행해야합니다. 도커 컨테이너 안에 도커 설치를 피하는 것이 좋습니다.
이유는 바로 읽을'stdin' 대신 직접 그것을 할 쉘을 사용하려고의 두 번째 스크립트? (쉘을 사용하여 할 수는 있지만, 'stdin'에 연결하지는 않았지만, 그걸 가장 쓸모없는 고양이라고합니다. (http://porkmail.org/era/unix/award .html) 나는 이제까지 본 적이있다.) – kindall
'script2.py'는'script1.py'가 그것들을 쓰는 방법에 관계없이 똑같은 연속적인 바이트 스트림을 보게 될 것이다. 'script1.py'의 출력에 추가 바이트를 삽입하고 파싱하지 않고도 다른 파일의 바이트를 확실하게 구별 할 수는 없습니다. – chepner
@chepner, 무슨 일을 할 수 있는지 보여 주시겠습니까? – Vishnu