python popen 예제

이 메서드는 더 이상 사용되지 않으며 파이썬 설명서는 다음과 같이 popen3 메서드를 교체할 것을 권고합니다. 인수 모드는 이 출력 파일이 읽을 수 있는지(`r`) 또는 쓰기 가능(`w`)인지를 정의합니다. 모드에 `b`를 적용하면 바이너리 모드에서 파일이 열립니다. 따라서, 예를 들어 “rb”는 읽을 수 있는 바이너리 파일 객체를 생성한다. 버전 3.3.1에서 변경: bufsize 이제 대부분의 코드가 기대하는 동작과 일치하도록 기본적으로 버퍼링을 사용하도록 설정하려면 -1로 기본설정됩니다. 파이썬 3.2.4 및 3.3.1 이전 버전에서는 버퍼링되지 않고 짧은 읽기를 허용한 0으로 잘못 기본설정되었습니다. 이것은 의도하지 않았으며 대부분의 코드가 예상한 대로 Python 2의 동작과 일치하지 않았습니다. stdin이 다른 명령의 stdout임을 지정합니다. 예를 들어 `에코`를 실행하려면 | grep -i-o `hello“: 파이썬 3.5 이전에이 세 가지 함수는 하위 프로세스에 대한 높은 수준의 API로 구성되었습니다. 이제 많은 경우에 run()을 사용할 수 있지만 많은 기존 코드가 이러한 함수를 호출합니다.

os.popen 메서드는 명령에서 파이프를 엽니다. 이 파이프를 사용하면 명령에서 출력을 다른 명령으로 보낼 수 있습니다. 출력은 다른 프로그램에서 액세스할 수 있는 열린 파일입니다. 또한 popen2, popen3 및 popen4는 파이썬 2에서만 사용할 수 있지만 파이썬 3에서는 사용할 수 없습니다. Python 3에는 popen 메서드를 사용할 수 있지만 대신 하위 프로세스 모듈을 사용하는 것이 좋습니다. Popen() 함수를 통해 프로세스를 열어 프로세스와 통신할 수 있습니다. 생성된 프로세스 인스턴스를 변수로 설정한 다음 프로세스 파이프를 읽는 통신() 함수를 사용합니다. 이 예제에서는 에코 명령을 사용하여 hello poftut를 파이프에 넣은 다음 통신() popen* 메서드를 사용하는 방법과 선호하는 것을 읽습니다. 의견에 알려주세요! 프로세스의 표준 입력 채널로 데이터를 한 번 전송하려면 데이터를 전달하여 통신합니다().

이것은 모드 `w`와 popen ()를 사용하는 것과 유사합니다. run() 함수가 파이썬 3.5에 추가되었습니다. 이전 버전과의 호환성을 유지해야 하는 경우 이전 상위 수준 API 섹션을 참조하십시오. 셸=True가 있는 유닉스에서는 쉘이 기본값으로 /bin/sh로 설정됩니다. args가 문자열인 경우 문자열은 셸을 통해 실행할 명령을 지정합니다. 즉, 셸 프롬프트에 입력할 때와 똑같이 문자열의 서식이 지정되어야 합니다. 예를 들어, 인용 또는 백슬래시에 공백이 있는 파일 이름을 이스케이프합니다. args가 시퀀스인 경우 첫 번째 항목은 명령 문자열을 지정하고 추가 항목은 셸 자체에 대한 추가 인수로 처리됩니다. 즉, Popen은 popen3 ()와 마찬가지로 stdout 및 stderr에 대한 두 스트림을 모두 볼 수도 있습니다. 신호를 보내는 데 사용되는 pid는 이 예제에서는 상호 작용하는 세 개의 개별 프로세스가 있기 때문에 신호를 기다리는 쉘 스크립트의 자식의 pid와 일치하지 않습니다.

예를 들어 존재하지 않는 실행 을 호출하는 경우입니다. 이것은 하위 프로세스에 오류가 없었기 때문에 예외를 throw합니다 . 아래 코드는 os.popen 메서드를 사용하는 방법의 예를 보여 주며, 이러한 인수는 이전 메서드인 os.popen과 동일한 의미를 갖습니다. 이 코드는 위의 첫 번째 코드 출력에 표시된 것과 동일한 결과를 생성합니다. 여기서 차이점은 popen2 메서드의 출력이 두 개의 파일로 구성된다는 것입니다. 따라서 2번째 코드 줄은 두 가지 변수인 인/아웃을 정의합니다. 마지막 줄에서는 출력 파일을 읽고 콘솔에 인쇄합니다. popen2 함수에 대한 cmd 인수가 문자열인 경우 명령은 /bin/sh를 통해 실행됩니다. 목록인 경우 명령이 직접 실행됩니다. 메서드 asyncio.create_subprocess_exec()은 Popen()과 거의 동일한 방식으로 작동하지만 반환된 개체에서 wait() 및 통신()을 호출해도 프로세서가 차단되지 않으므로 외부 하위 프로세스가 작동하지 않는 동안 파이썬 인터프리터를 다른 작업에서 사용할 수 있습니다.

반환.