Python 호출 시스템 명령 의 여섯 가지 방법 을 자세히 설명 합 니 다.
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 가지 방법 에 관 한 글 은 여기까지 입 니 다.더 많은 파 이 썬 호출 시스템 명령 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.