[파이썬] 터미널 작업 자동화

터미널을 사용하여 반복적인 작업을 자동화하는 것은 개발자에게 매우 유용합니다. Python은 이러한 작업을 수행하기에 매우 강력한 도구입니다. 이 블로그 포스트에서는 Python을 사용하여 터미널 작업을 자동화하는 방법에 대해 알아보겠습니다.

subprocess 모듈로 터미널 명령어 실행하기

Python의 subprocess 모듈은 터미널 명령어를 실행하고 결과를 가져오는 데 사용됩니다. 다음은 subprocess 모듈을 사용하여 터미널에서 ls 명령어를 실행하는 예제입니다.

import subprocess

result = subprocess.run(['ls'], capture_output=True, text=True)
print(result.stdout)

위의 코드에서 subprocess.run 함수는 ls 명령어를 실행하고 결과를 result 변수에 저장합니다. capture_output 매개변수를 True로 설정하여 표준 출력을 캡처하고, text 매개변수를 True로 설정하여 결과를 텍스트 형식으로 가져옵니다. 마지막으로 stdout 속성을 사용하여 출력을 출력합니다.

여러 터미널 명령어 실행하기

여러 터미널 명령어를 실행해야 할 때는 subprocess.Popen 함수를 사용할 수 있습니다. 다음은 여러 터미널 명령어를 실행하고 출력을 읽는 예제입니다.

import subprocess

commands = [
    ['ls'],
    ['pwd'],
    ['echo', 'Hello World']
]

for cmd in commands:
    process = subprocess.Popen(cmd, stdout=subprocess.PIPE, text=True)
    output, _ = process.communicate()

    print(output)

subprocess.Popen 함수는 지정된 명령어를 실행하고 process 객체를 반환합니다. stdout=subprocess.PIPE를 사용하여 표준 출력을 캡처하고, text=True를 사용하여 결과를 텍스트 형식으로 가져옵니다. 마지막으로 process.communicate() 메서드를 사용하여 명령어를 실행하고 출력을 읽습니다.

터미널 작업 자동화 스크립트 작성하기

Python으로 터미널 작업을 자동화하는 스크립트를 작성하는 것은 간단합니다. 예를 들어 특정 디렉토리에서 모든 파일을 나열하고 파일의 크기를 출력하는 스크립트를 작성해 보겠습니다.

import os

def list_files(directory):
    for filename in os.listdir(directory):
        path = os.path.join(directory, filename)
        if os.path.isfile(path):
            size = os.path.getsize(path)
            print(f"{filename} - {size} bytes")

list_files('/path/to/directory')

위의 코드에서는 os.listdir 함수를 사용하여 지정된 디렉토리의 파일 목록을 가져옵니다. os.path.join 함수를 사용하여 디렉토리 경로와 파일 이름을 연결하고, os.path.isfile 함수를 사용하여 파일인지 확인합니다. 마지막으로 os.path.getsize 함수를 사용하여 파일의 크기를 가져옵니다.

마치며

Python을 사용하여 터미널 작업을 자동화하는 것은 개발자의 생산성을 크게 향상시킬 수 있습니다. subprocess 모듈을 사용하여 터미널 명령어를 실행하고 결과를 가져오는 법을 배웠고, 자동화 스크립트를 작성하는 방법을 살펴보았습니다. 터미널 작업 자동화를 통해 반복적이고 지루한 작업을 자동으로 처리할 수 있으므로 더 많은 시간을 개발에 투자할 수 있습니다.