이 시나리오에서는 subprocess 모듈을 사용하여 셸 명령을 실행하고 echo, awk 세 가지 명령을 연결하는 것을 목표로 합니다. , 정렬하고 출력을 출력 파일로 파이프합니다.
echo "input data" | awk -f script.awk | sort > outfile.txt
사용 subprocess.Popen의 결과는 다음과 같습니다.
import subprocess p_awk = subprocess.Popen(["awk","-f","script.awk"], stdin=subprocess.PIPE, stdout=file("outfile.txt", "w")) p_awk.communicate( "input data" )
이 솔루션은 정렬을 위한 awk 파이핑을 다루지만 다음과 같은 중요한 고려 사항을 간과합니다.
허용된 답변에서 제안한 대로 awk 및 파이프를 사용하는 대신, script.awk를 Python으로 다시 작성하는 것이 더 유리합니다. 이렇게 하면 awk, 파이프라인 및 복잡한 하위 프로세스 처리가 필요하지 않습니다.
Python 내에서 모든 작업을 수행하면 다음과 같은 이점을 얻을 수 있습니다. 여러 가지 장점:
셸에서 파이프라인을 생성하려면 여러 포크와 파일 설명자 조작이 필요합니다. Python에서는 하위 수준 API를 사용하여 가능하지만 다음과 같이 파이프라인 생성을 셸에 위임하는 것이 훨씬 간단합니다.
awk_sort = subprocess.Popen( "awk -f script.awk | sort > outfile.txt", stdin=subprocess.PIPE, shell=True ) awk_sort.communicate( b"input data\n" )
이 접근 방식은 셸을 중개자로 사용하여 파이프라인을 생성하고 Python 코드를 단순화합니다.
위 내용은 `subprocess.Popen`을 사용하여 복잡한 배관을 피하면서 Python에서 여러 프로세스를 효율적으로 연결하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!