Python subprocess 라 이브 러 리 사용 설명
2565 단어 Python서브 프로 세 스 라 이브 러 리
subprocess 모듈 을 사용 하 는 목적 은 os.system 등 오래된 모듈 과 방법 을 교체 하 는 데 사 용 됩 니 다.
python 을 실행 할 때,우 리 는 프로 세 스 를 만 들 고 실행 합 니 다.Linux 프로 세 스 처럼 하나의 프로 세 스 는 하위 프로 세 스 를 fork 하고 이 하위 프로 세 스 exec 를 다른 프로그램 으로 만 들 수 있 습 니 다.Python 에서 표준 라 이브 러 리 에 있 는 subprocess 패 키 지 를 통 해 하위 프로 세 스 를 fork 하고 외부 프로그램 을 실행 합 니 다.
subprocess 패키지 에 서 는 하위 프로 세 스 를 만 드 는 함수 가 여러 개 정의 되 어 있 습 니 다.이 함수 들 은 각각 다른 방식 으로 하위 프로 세 스 를 만 들 기 때문에 필요 에 따라 하 나 를 선택 하여 사용 할 수 있 습 니 다.또한 subprocess 는 표준 흐름(standard stream)과 파이프(pipe)를 관리 하 는 도 구 를 제공 하여 프로 세 스 간 에 텍스트 통신 을 사용 합 니 다.
가 져 오기 모듈
>>> import subprocess
명령 실행 call()매개 변수 가 제공 하 는 명령 을 실행 하고 배열 을 매개 변수 로 명령 을 실행 합 니 다.그 기능 은 os.system(cmd)과 유사 하 다.
>>> subprocess.call(['ls','-l')
매개 변수 셸 은 기본적으로 False 입 니 다.셸 이 True 로 설정 되 었 을 때 문자열 을 직접 전달 할 수 있 습 니 다.
>>> subprocess.call('ls -l',shell=True)
반환 결과 획득 checkoutput()call()은 표 시 된 결 과 를 되 돌려 주지 않 습 니 다.check 을 사용 할 수 있 습 니 다.ouput()로 되 돌아 오 는 결 과 를 얻 습 니 다:
>>> result = subprocess.check_output(['ls','-l'],shell=True)
>>> result.decode('utf-8')
프로 세 스 생 성 및 관리 Popen 클래스os.open 대신 subprocess.open.프로 세 스 를 만 들 고 복잡 한 상호작용 을 할 수 있 는 Popen 클래스 를 만 들 수 있 습 니 다.
기다 리 지 않 는 하위 프로 세 스 만 들 기
import subprocess
child = subprocess.Popen(['ping','-c','4','www.baidu.com'])
print('Finished')
하위 프로 세 스 추가 대기
import subprocess
child = subprocess.Popen(['ping','-c','4','www.baidu.com'])
child.wait() #
print('Finished')
wait()를 추가 하면 주 프로 세 스 는 하위 프로 세 스 가 끝 날 때 까지 기 다 렸 다가 다음 문 구 를 실행 합 니 다.하위 프로 세 스 텍스트 흐름 제어
표준 출력 방향 변경:
import subprocess
child = subprocess.Popen(['ls','-l'],stdout=subprocess.PIPE) # subprocess.PIPE
print(child.stdout.read())
stdin 과 함께 사용 하기:
import subprocess
child1 = subprocess.Popen(['cat','/etc/passwd'],stdout=subprocess.PIPE)
child2 = subprocess.Popen(['grep','root'],stdin=child1.stdout,stdout=subprocess.PIPE)
print child2.communicate()
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.