Python 에서 시스템 명령 을 실행 하 는 방법 예시 상세 설명

머리말
Python 은 다른 프로그램 을 쉽게 조작 하고 다른 언어 로 작 성 된 라 이브 러 리 를 쉽게 포장 할 수 있 기 때문에'풀 언어'라 고 자주 불 린 다.Python/wxPython 환경 에서 외부 명령 을 실행 하거나 Python 프로그램 에서 다른 프로그램 을 시작 하 는 방법 입 니 다.
본 고 는 Python 에서 시스템 명령 을 어떻게 수행 하 는 지 에 관 한 자 료 를 상세 하 게 소개 할 것 입 니 다.다음은 더 이상 말 하지 않 겠 습 니 다.상세 한 소 개 를 해 보 겠 습 니 다.
(1) os.system()
이 방법 은 표준 C 의system()함 수 를 직접 호출 합 니 다.하나의 터미널 에서 시스템 명령 을 실행 할 뿐 되 돌아 오 는 정 보 를 얻 을 수 없습니다.

>>> import os 
>>> output = os.system('cat /proc/cpuinfo') 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>> output # doesn't capture output 
0 
(2) os.popen()
이 방법 은 명령 을 실행 하고 실 행 된 정보 대상 을 되 돌려 주 며 파이프 파일 을 통 해 결 과 를 되 돌려 줍 니 다.

>>> output = os.popen('cat /proc/cpuinfo') 
>>> output 
<open file 'cat /proc/cpuinfo', mode 'r' at 0x7ff52d831540> 
>>> print output.read() 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>><span style="font-size:14px;"> 
(3)commands 모듈

>>> import commands 
>>> (status, output) = commands.getstatusoutput('cat /proc/cpuinfo') 
>>> print output 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>> print status 
0
주의 1:유 닉 스 시스템 에서 이 방법 으로 되 돌아 오 는 반환 값(status)은 스 크 립 트 나 명령 이 실 행 된 후의 반환 값 과 다 릅 니 다.os.wait()를 호출 했 기 때문에 구체 적 인 원인 은 시스템 wait()의 실현 을 알 아 봐 야 합 니 다.정확 한 반환 값(status)이 필요 합 니 다.반환 값 을 오른쪽으로 8 자리 이동 하면 됩 니 다.
주의 2:명령 을 실행 하 는 인자 나 반환 에 중국어 문자 가 포함 되 어 있 을 때 subprocess 를 사용 하 는 것 을 권장 합 니 다.
(4)subprocess 모듈
이 모듈 은 강력 한 기능 을 가 진 하위 프로 세 스 관리 모듈 로 교체os.system,os.spawn*등 방법의 모듈 이다.

>>> import subprocess 
>>> subprocess.Popen(["ls", "-l"]) <strong> # python2.x</strong> doesn't capture output 
>>> subprocess.run(["ls", "-l"]) <strong># python3.x</strong> doesn't capture output 
<subprocess.Popen object at 0x7ff52d7ee490> 
>>> total 68 
drwxrwxr-x 3 xl xl 4096 Feb 8 05:00 com 
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Desktop 
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Documents 
drwxr-xr-x 2 xl xl 4096 Jan 21 07:44 Downloads 
... ... 
>>>
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
보충:
최근 에 그 테스트 프레임 워 크 를 만 들 때 Python 의 또 다른 시스템 실행 명령 의 반환 값 과 출력 클래스 를 발 견 했 습 니 다.
처음에 Python 으로 os.system()을 배 웠 습 니 다.이 방법 은 C,Perl 과 비슷 합 니 다.
os.system('cat /proc/cpuinfo')
하지만 출력 과 반환 값 을 얻 을 수 없습니다.Google 을 계속 하 다가 os.open()을 배 웠 습 니 다.
output = os.popen('cat /proc/cpuinfo')
print output.read()
os.open()을 통 해 file read 의 대상 을 되 돌려 주 고 read()를 읽 는 동작 을 하면 실 행 된 출력 을 볼 수 있 습 니 다.하지만 프로그램 이 실행 한 반환 값 을 어떻게 읽 을 수 있 습 니까?물론 입 니 다.위대 한 구 글 에 게 계속 물 어보 세 요.Baidu 무시).Google 은 commands―Utilities for running commands 를 가리 키 고 있 습 니 다.
이렇게 하면 commands.getstatusoutput()방법 을 통 해 반환 값 과 출력 을 얻 을 수 있어 서 매우 좋다.
(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')
print status, output
Python Document 에서 준 예 는 각 방법의 귀환 을 분명하게 보 여 줍 니 다.
>>> import commands
>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')
>>> commands.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
>>> commands.getoutput('ls /bin/ls')
'/bin/ls'
>>> commands.getstatus('/bin/ls')
'-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'

좋은 웹페이지 즐겨찾기