본문 바로가기

Python

[python] 파이썬으로 윈도우 cmd 명령어 수행하기

반응형

 

파이썬 스크립트에서 중간에 윈도우 CMD 명령어를 수행하고 싶다면 어떻게 해야할까?

 

보통 아래와 같이 두가지 방법을 사용한다. 

 

 

1. os.system

>>> import os
>>> os.system('cd')
C:\Python27
0
>>> os.system('dir')
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: 3C-44

 C:\Python27 디렉터리

2020-04-12  오후 08:11    <DIR>          .
2020-04-12  오후 08:11    <DIR>          ..
2020-04-12  오후 08:11    <DIR>          DLLs
2020-04-12  오후 08:11    <DIR>          Doc
2020-04-12  오후 08:11    <DIR>          Tools
               5개 파일             671,023 바이트
              10개 디렉터리  31,853,121,536 바이트 남음

 

os 모듈을 임포트해서 system 함수를 사용하여 리눅스 명령어를 수행한다. 파이썬을 수행하는 환경에 명령어를 전달하여 수행한다. os.system은 인자값으로 명령어만 전달해주면 수행해주기 때문에 직관적이나, 명령어의 결과값들을 변수에 저장할 수 없다는 한계가 있다. os.system 의 결과는 프로세스의 수행 결과 값을 리턴하는데 보통 성공하면 0을 리턴하고 실패했을 때는 그에 맞는 에러 코드가 반환된다.

 

만약 출력값을 저장하고 싶다면 아래와 같이 popen을 통해 명령어를 수행하고 read를 통해 읽는 방법을 통해 출력값을 변수에 저장할 수 있다.

 

import os
>>> path = os.popen('cd').read()
>>> path
'C:\\Python27\n'
>>> i = os.popen('whoami').read()
>>> i
'desktop-n59v670\\lyuqja\n'

 

 

2. subprocess

import subprocess
>>> subprocess.call("whoami")
desktop-n59v670\l12341on
0
>>> subprocess.call("type README.md", shell=True)
Hello World
0

subprocess 모듈을 통해서도 리눅스 명령어를 수행할 수 있다.

대략적인 사용방법은 위와 같다. 

만약 출력값을 변수에 전달하고 싶을때는 check_output 명령어를 통해서 할 수 있다.

 

>>> import subprocess
>>> text = subprocess.check_output("type README.md", shell=True)
>>> text
b'Hello world\n'
>>> i = subprocess.check_output("whoami")
>>> i
b'desktop-n59\no1234\n'

 

반응형