Python 호출 시스템 명령 의 여섯 가지 방법 을 자세히 설명 합 니 다.

풀 언어 로 서 Python 은 시스템 명령 을 편리 하 게 수행 할 수 있 습 니 다.Python 3 에서 자주 사용 하 는 실행 운영 체제 명령 은 os.system(),os.open(),subprocess.open(),subprocess.call(),subprocess.run(),subprocess.getstatusoutput()여섯 가지 방법 이 있 습 니 다.
os.system()
system 함 수 는 문자열 을 명령 으로 바 꾸 어 서버 에서 실행 할 수 있 습 니 다.그 원 리 는 모든 system 함수 가 실 행 될 때 하위 프로 세 스 가 시스템 에서 명령 행 을 실행 하 는 것 입 니 다.하위 프로 세 스 의 실행 결 과 는 주 프로 세 스에 영향 을 줄 수 없습니다.
그 반환 값 은 명령 이 실 행 된 후에 돌아 오 는 상태 코드 로 0 은 명령 이 성공 적 으로 실 행 된 것 을 나타 내 고 1 은 실 패 했 음 을 나타 내 며 256 은 결 과 를 되 돌려 주지 않 았 음 을 나타 내 며 이 방법 은 시스템 명령 이 내용 을 출력 하지 않 아 도 되 는 장면 에 적용 된다.
사용법:

os.system("command")

예시:

import os
a=os.system("ping 192.168.1.101") #  a     
print(a)

출력:
Ping 192.168.1.101 에서 32 바이트 의 데 이 터 를 가지 고 있 습 니 다.
바이트=32 시간=8ms TTL=127
바이트=32 시간=2ms TTL=127
바이트=32 시간=2ms TTL=127
바이트=32 시간=2ms TTL=127
192.168.1.101 의 Ping 통계 정보:
    패 킷:이미 발송=4,이미 수신=4,분실=0(0%분실),
왕복 일정 의 예상 시간(밀리초 단위):
    최 단=2ms,최 장=8ms,평균=3ms
0
Process finished with exit code 0
Liux 시스템 에서 도 실행 할 수 있 습 니 다.

import os
os.system('cd /home && mkdir test')           &&  
os.popen(command,mode)
이 호출 방식 은 파이프 방식 을 통 해 이 루어 집 니 다.이 함수 의 반환 값 은 파일 대상 입 니 다.읽 거나 쓸 수 있 습 니 다(mode 에 의 해 결정 되 며 mode 는 기본적으로'r'입 니 다).mode 가'r'라면 이 대상 의 read()나 readlines()방법 으로 출력 내용 을 읽 을 수 있 습 니 다.
용법:os.open(command[,mode[,bufsize]])
os.system(cmd)또는 os.open(cmd),전자 반환 값 은 스 크 립 트 의 종료 상태 코드 이 고,후자 의 반환 값 은 스 크 립 트 실행 과정 에서 의 출력 내용 입 니 다.

import os
a=os.popen("ipconfig")
print(a.read())
출력:
이 더 넷 어댑터 이 더 넷:
   특정 DNS 접 두 사 를 연결 합 니 다......:
   로 컬 링크 IPv 6 주소.....:fe81::b0ed:2b1b:7385:97d1%8
   IPv 4 주소......:192.168.1.100
   서브 넷 마스크  . . . . . . . . . . . . : 255.255.255.0
   기본 게 이 트 웨 이...............................................................
서브 프로 세 스 모듈
subprocess 모듈 은 python 이 2.4 버 전부터 도입 한 모듈 로 주로 os.system,os.spawn,os.open,commands.*등 오래된 모듈 방법 을 대체 하 는 데 사용 된다.공식 적 으로 이 모듈 을 사용 하여 시스템 명령 을 실행 하 는 것 을 추천 합 니 다.subprocess 모듈 은 하위 프로 세 스 를 통 해 외부 명령 을 수행 하고 input/output/error 파 이 프 를 통 해 하위 프로 세 스 의 실행 에 대한 반환 정 보 를 얻 습 니 다.
장점 은 스 레 드 에 대한 제어 와 감 시 를 활용 하여 돌아 오 는 결 과 를 하나의 변수 에 부여 하여 프로그램의 처리 에 편리 하 다 는 것 이다.
subprocess.Popen()
Popen 을 사용 하면 프로 세 스 를 만 들 고 프로 세 스 와 복잡 한 상호작용 을 할 수 있 습 니 다.
용법:child=subprocess.Popen(["cmd","arg 1"...])
상용 매개 변수 설명:

예시

from subprocess import PIPE, Popen

#      Popen     
proc = Popen(
  'ipconfig', # cmd          
  stdin=None, #        
  stdout=PIPE, # -1     (   、  )             
  stderr=PIPE, #     ,     
  shell=True)

# print(proc.communicate()) #         +        
outinfo, errinfo = proc.communicate()
print(outinfo.decode('gbk')) #     (windows  )      
print(errinfo.decode('gbk'))

출력:
이 더 넷 어댑터 이 더 넷:
   특정 DNS 접 두 사 를 연결 합 니 다......:
   로 컬 링크 IPv 6 주소.....:fe81::b0ed:2b1b:7385:97d1%8
   IPv 4 주소......:192.168.1.100
   서브 넷 마스크  . . . . . . . . . . . . : 255.255.255.0
   기본 게 이 트 웨 이...............................................................
Process finished with exit code 0
subprocess.call()
지정 한 명령 을 실행 하고 명령 실행 상 태 를 되 돌려 줍 니 다.os.system(cmd)과 같은 기능 이 있 습 니 다.매개 변수 셸 은 기본적으로 False 입 니 다.
용법:subprocess.call("command")

# linux      
import subprocess
subprocess.call(['df', '-h']) #           

출력:
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        909M     0  909M   0% /dev
tmpfs           920M   32K  920M   1% /dev/shm
tmpfs           920M  472K  919M   1% /run
tmpfs           920M     0  920M   0% /sys/fs/cgroup
/dev/vda1        50G  6.2G   41G  14% /
tmpfs           184M     0  184M   0% /run/user/0
subprocess.run()
python 3.5 에 추 가 된 함수 입 니 다.지정 한 명령 을 실행 하고 명령 이 실 행 된 후에 실행 결 과 를 포함 하 는 Complete Process 클래스 의 인 스 턴 스 를 되 돌려 줍 니 다.run 은 기본적으로 출력 을 되 돌려 주지 않 고 명령 과 실행 상태 만 되 돌려 줍 니 다.
사용법:
subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, universal_newlines=False)

import subprocess
completed = subprocess.run(['ls', '-1'])
print('returncode:', completed.returncode)
subprocess.getstatusoutput()
cmd 명령 을 실행 하고 원 그룹(명령 실행 상태,명령 실행 결과 출력)을 되 돌려 줍 니 다.
상태 코드 와 결 과 를 되 돌려 줍 니 다.0 은 성공 을 표시 합 니 다.

import subprocess
ret, val = subprocess.getstatusoutput("ping www.baidu.com")
print(ret)
print(val)

출력:
0
Pingwww.a.shifen.com[14.215.17.39]32 바이트 의 데이터 가 있 습 니 다.
바이트=32 시간=29ms TTL=53
바이트=32 시간=29ms TTL=53
바이트=32 시간=29ms TTL=53
바이트=32 시간=30ms TTL=53
14.215.177.39 의 Ping 통계 정보:
    패 킷:이미 발송=4,이미 수신=4,분실=0(0%분실),
왕복 일정 의 예상 시간(밀리초 단위):
    최 단=29ms,최 장=30ms,평균=29ms
subprocess 모듈 의 구체 적 인 용법 에 대해 서 는 문 서 를 보고 학습 할 수 있 습 니 다https://docs.python.org/3/library/subprocess.html
파 이 썬 호출 시스템 명령 을 상세 하 게 설명 하 는 6 가지 방법 에 관 한 글 은 여기까지 입 니 다.더 많은 파 이 썬 호출 시스템 명령 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기