터미널을 사용하여 반복적인 작업을 자동화하는 것은 개발자에게 매우 유용합니다. 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
모듈을 사용하여 터미널 명령어를 실행하고 결과를 가져오는 법을 배웠고, 자동화 스크립트를 작성하는 방법을 살펴보았습니다. 터미널 작업 자동화를 통해 반복적이고 지루한 작업을 자동으로 처리할 수 있으므로 더 많은 시간을 개발에 투자할 수 있습니다.