셸 명령을 실행하고 Python에서 출력 가져오기

Salman Mehmood 2023년6월21일
  1. Python 스크립트에서 CMD 명령을 실행하고 os.system()을 사용하여 출력 가져오기
  2. Python 스크립트에서 CMD 명령을 실행하고 Subprocess 모듈을 사용하여 출력 가져오기
셸 명령을 실행하고 Python에서 출력 가져오기

이 기사에서는 os.system()의 도움으로 Python 스크립트에서 cmd 명령을 실행하는 방법을 배웁니다. 또한 Python의 subprocess 모듈을 사용하여 더 쉽게 스크립트에서 cmd 명령을 실행하는 방법을 배웁니다.

Python 스크립트에서 CMD 명령을 실행하고 os.system()을 사용하여 출력 가져오기

우리는 다른 목적을 위해 명령 프롬프트 또는 다른 터미널에서 터미널 명령을 실행합니다. 그러나 때로는 스크립트 내에서 특정 명령을 실행해야 합니다.

Python 스크립트 내에서 직접 실행할 수 있는 방법을 살펴보겠습니다. 서버 구성 작업을 할 때 편리합니다.

먼저 dir, cd 또는 md와 같이 터미널에서 작동하는 몇 가지 명령을 보여드리겠습니다.

명령 프롬프트의 터미널 명령

이제 Python 스크립트에 동일한 항목을 포함하는 방법을 살펴보겠습니다. 이를 위해 os라는 모듈을 가져옵니다.

os 모듈은 운영 체제와 상호 작용하는 데 도움이 됩니다. os 모듈은 파일 및 폴더 관리와 같은 운영 체제 작업을 광범위하게 지원합니다.

코드 속으로 뛰어들어 봅시다. system()은 유사한 쉘에서 명령을 실행하는 메서드이므로 명령을 내리면 터미널에서 실행하는 방식으로 계속 실행됩니다.

시스템 기능은 또한 많은 명령을 실행할 수 있습니다. 터미널에서 실행할 수 있는 모든 명령을 실행합니다.

try 블록을 사용하고 이 블록 내에서 터미널을 사용하여 운영 체제와 상호 작용하는 데 도움이 되는 system() 메서드를 사용합니다. try 블록이 지정된 명령을 실행하지 않으면 except 블록으로 이동합니다.

system() 메서드 내에서 명령을 전달해야 하지만 명령 유형은 cmd입니다. 이를 위해 /k를 사용하고 작은따옴표 또는 큰따옴표 안에 명령을 입력해야 합니다.

import os

try:
    os.system('cmd /k "date"')
except:
    print("Could not execute command")

실행하여 이것이 정확한 출력을 제공하는지 확인합시다.

The current date is: 24/08/2022
Enter the new date: (dd-mm-yy)

출력이 명령 프롬프트에서 제공하는 것과 동일한 것을 볼 수 있습니다.

실행할 수 있는 많은 명령이 있습니다. 메모장이나 계산기를 열거나 시스템 정보 등을 볼 수 있습니다.

Python 스크립트에서 응용 프로그램 열기 및 시스템 정보 표시

명령이 반환하는 내용을 얻으려면 os 모듈의 popen() 기능을 사용하여 얻을 수 있습니다. 이 함수 내에서 명령을 전달하고 readlines() 메서드를 사용하여 내용을 가져올 수 있습니다.

깨끗한 데이터를 얻기 위해 많은 방법을 사용할 수 있습니다. 그것은 당신 한테 달려 있어요.

import os

DATA = os.popen("help").readlines()[5].strip("\n")
print(DATA)

명령이 반환하는 콘텐츠 가져오기

클래스, 루프, 함수 등 어디에서나 이러한 명령을 사용할 수 있습니다. 함수로 래핑하지 않아도 제대로 작동합니다.

import os


def CMD_Com():
    DATA = os.popen("help").readlines()[5].strip("\n")
    print(DATA)


CMD_Com()

출력:

CACLS          Displays or modifies access control lists (ACLs) of files.

Python 스크립트에서 CMD 명령을 실행하고 Subprocess 모듈을 사용하여 출력 가져오기

하위 프로세스와 상호 작용하는 것은 필수 기술입니다. Python 스크립트 내에서 터미널 명령을 실행하기 위해 os 모듈을 사용하는 것은 권장되지 않습니다.

os.system()을 사용하여 터미널 명령을 실행하는 것은 Python에서 명령을 실행하는 매우 간단한 방법입니다.

os.system()에는 기능이 제한되어 있습니다. 올바른 방법은 subprocess라는 모듈을 사용하는 것입니다. 이 모듈은 터미널 명령을 실행하는 데 너무 어렵지 않습니다. subprocess 모듈을 사용하여 현재 작업 중인 모든 운영 체제 명령을 실행할 수 있습니다.

이는 메모장 열기, 현재 작업 디렉토리 확인 또는 subprocess 모듈을 사용하여 실행할 수 있는 기타 작업과 같이 운영 체제에서 모든 기존 명령을 실행하는 방법입니다.

import subprocess

# subprocess.Popen('notepad')
# subprocess.Popen('systeminfo')
subprocess.Popen("dir", shell=True)

출력:

 Directory of C:\Users\Dell\Downloads\demo

24/08/2022  07:01 pm    <DIR>          .
24/08/2022  07:01 pm    <DIR>          ..
25/08/2022  01:47 am               460 demo.py
               1 File(s)            460 bytes
               2 Dir(s)  32,532,512,768 bytes free

여기에서 subprocess 모듈에 대해 자세히 알아볼 수 있습니다.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn