Python 에서 자주 사용 하 는 외부 명령 실행 코드 인 스 턴 스
가로막다
화면 에서 명령 의 출력 을 인쇄 합 니 다.
명령 결과 코드 되 돌리 기
# -*- encoding=utf-8 -*-
import os
if __name__ == '__main__':
pass
print(' ')
ret1 = os.system('python')
print('ret1:{}'.format(ret1))
ret2 = os.system('java -version')
print('ret2:{}'.format(ret2))
print(' ')
운행 하 다.차단 이 python 을 실 행 했 기 때 문 이라는 것 을 이해 하 는 사람 이 있 을 수 있 습 니 다.그래서 두 명령 을 모두 자바-version 으로 사용 해 보 겠 습 니 다.
# -*- encoding=utf-8 -*-
import os
if __name__ == '__main__':
pass
print(' ')
ret1 = os.system('java -version')
print('ret1:{}'.format(ret1))
ret2 = os.system('java -version')
print('ret2:{}'.format(ret2))
print(' ')
운행 하 다.2、os.popen()
막다
화면 에서 명령 의 출력 을 출력 하지 않 습 니 다.
파일 대상 을 되 돌려 줍 니 다.readline 으로 읽 을 수 있 습 니 다.
막 히 지 않 을 때:
# -*- encoding=utf-8 -*-
import os
if __name__ == '__main__':
pass
print(' ')
os.popen('python')
ret2 = os.popen('java -version')
print(' ')
실행(프로그램 이 두 개의 print 문 구 를 사용 한 것 처럼 빠르게 인쇄 시작 과 끝)차단 시간:
# -*- encoding=utf-8 -*-
import os
if __name__ == '__main__':
pass
print(' ')
ret1 = os.popen('python')
print(ret1.read())
ret2 = os.popen('java -version')
print(ret2.read())
print(' ')
운행 하 다.3、commands.getstatusoutput
python 2.+에서 사용
linux 로 실행 해 야 합 니 다
막 히 거나 막 히 지 않 음
화면 에서 명령 의 출력 을 출력 하지 않 습 니 다.
비 차단 시
# -*- encoding=utf-8 -*-
import commands
if __name__ == '__main__':
pass
print(' ')
ret1 = commands.getstatusoutput('python')
ret2 = commands.getstatusoutput('java -version')
print(' ')
운행 하 다.차단 시간:
# -*- encoding=utf-8 -*-
import commands
if __name__ == '__main__':
pass
print(' ')
ret1 = commands.getstatusoutput('python')
print ret1[0]
print ret1[1]
print '=============='
ret2 = commands.getstatusoutput('java -version')
print ret2[0]
print ret2[1]
print '=============='
print(' ')
운행 하 다.4,subprocess 에서 popen
막 히 거나 막 히 지 않 습 니 다.위 와 마찬가지 로 IO 를 읽 을 지 여 부 를 통 해 막 힐 지 여 부 를 결정 합 니 다.
화면 에서 명령 의 출력 을 출력 합 니 다.
stdout,stderr 매개 변 수 를 통 해 출력 을 지정 하거나 파일 에 잘못 인쇄 할 수 있 습 니 다.
# -*- encoding=utf-8 -*-
import subprocess
if __name__ == '__main__':
pass
print(' ')
s1 = subprocess.Popen('python')
s1.wait()
s2 = subprocess.Popen('java -version')
s2.wait()
print(' ')
운행 하 다.4.1 파일 로 출력
파일 대상 을 통 해 파일 에 출력 합 니 다.
# -*- encoding=utf-8 -*-
import subprocess
if __name__ == '__main__':
pass
print(' ')
with open('s1.txt', 'w') as f:
s1 = subprocess.Popen('python', stdout=f, ) #
s1.wait(10) # 10
with open('s2.txt', 'w') as f:
s2 = subprocess.Popen('java -version', stdout=f, stderr=f) #
s2.wait()
print(' ')
실행 후 파일 이 기록 되 어 있 고 화면 이 인쇄 되 지 않 은 것 을 볼 수 있 습 니 다.stdout 인지 stderr 인지 주의해 야 합 니 다.4.2 캡 처 출력 과 오류
PIPE 는 새로운 파 이 프 를 열 어 운행 상 태 를 수신 합 니 다.
# -*- encoding=utf-8 -*-
import subprocess
if __name__ == '__main__':
pass
print(' ')
s1 = subprocess.Popen('java -version', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
s1.wait(10) # 10
print(s1.returncode) #
print(s1.poll()) # , None
std1 = s1.stdout.read()
print('std_out:{}'.format(std1))
std2 = s1.stderr.read()
print('std_err:{}'.format(std2))
print(' ')
운행 하 다.5、subprocess.call
os.system 대신 사용 하기
가로막다
# -*- encoding=utf-8 -*-
import subprocess
if __name__ == '__main__':
pass
print(' ')
s1 = subprocess.call('java -version', )
print(s1)
s2 = subprocess.call('python', )
print(s2)
s3 = subprocess.call('python', timeout=3) #
print(s3)
print(' ')
6、check_call()과 checkoutput()결과 코드 를 검사 합 니 다.0 이 아니면 이상 을 던 집 니 다.
check_call()상태 코드 되 돌리 기
check_output()출력 되 돌리 기
# -*- encoding=utf-8 -*-
import subprocess
if __name__ == '__main__':
pass
print(' ')
s1 = subprocess.check_call('java -version', )
print(s1)
s2 = subprocess.check_output('java -version', )
print(s2)
print(' ')
운행 하 다.위 에서 언급 한 세 가지 방법 을 사용 하 세 요:call(),checkcall()과 checkoutput()시 인자 stderr 와 stdout 을 subprocess.PIPE 로 설정 하지 마 십시오.이 몇 가지 함 수 는 기본적으로 하위 프로 세 스 가 완성 되 기 를 기다 리 고 있 습 니 다.하위 프로 세 스 는 대량의 출력 데 이 터 를 생 성하 고 파이프 가 막 히 면 부모 프로 세 스 가 하위 프로 세 스 가 완성 되 기 를 기다 리 면 잠 금 이 생 길 수 있 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.