Python subprocess 라 이브 러 리 사용 설명

소개 하 다.
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()

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기