[파이썬] shutil `shutil.get_terminal_size()`의 폴

파이썬의 shutil 모듈은 파일 및 디렉토리 작업을 위한 유용한 기능을 제공합니다. 이 중 하나인 shutil.get_terminal_size() 함수는 터미널의 현재 크기를 가져오는 데 사용됩니다.

shutil.get_terminal_size() 함수

shutil.get_terminal_size() 함수는 현재 터미널의 크기를 가져옵니다. 이 정보는 터미널 창의 너비와 높이를 포함하며, 터미널 UI 또는 터미널 기반 애플리케이션에서 유용하게 사용될 수 있습니다.

import shutil

terminal_size = shutil.get_terminal_size()
print(f"Terminal size: {terminal_size.columns} columns x {terminal_size.lines} lines")

위의 예제 코드에서는 shutil.get_terminal_size()를 사용하여 터미널의 크기를 가져온 후, 이를 출력합니다. shutil.get_terminal_size() 함수는 os.get_terminal_size()와 동일한 결과를 제공하며, 이 함수를 통해 얻은 정보는 터미널 창의 크기를 동적으로 반영할 수 있습니다.

활용 예제

shutil.get_terminal_size() 함수는 터미널 기반의 애플리케이션에서 다양한 방식으로 활용될 수 있습니다. 몇 가지 예를 살펴보겠습니다.

1. 텍스트 유연하게 출력하기

터미널 창의 크기에 따라 출력되는 텍스트를 유연하게 제어하려면 shutil.get_terminal_size() 함수를 사용할 수 있습니다. 예를 들어, 긴 문자열을 출력할 때 터미널이 충분한 너비를 가지고 있는지 확인하고 필요한 경우 줄 바꿈을 추가할 수 있습니다.

import shutil

text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur aliquet efficitur luctus."

terminal_size = shutil.get_terminal_size()
if len(text) > terminal_size.columns:
    text = text[:terminal_size.columns-3] + "..."
print(text)

위의 예제에서는 shutil.get_terminal_size() 함수를 사용하여 터미널의 너비를 가져온 후, 문자열의 길이와 비교합니다. 문자열이 터미널 너비보다 길다면, “…“으로 줄여서 출력합니다.

2. 프로그래스 바 조절하기

프로그래스 바를 사용하여 작업 진행 상황을 표시할 때, shutil.get_terminal_size() 함수를 활용하여 프로그래스 바의 길이를 동적으로 설정할 수 있습니다. 이를 통해 터미널 창의 크기에 맞춰 프로그래스 바를 조절하여 보다 사용자 친화적인 경험을 제공할 수 있습니다.

import shutil

def draw_progress_bar(progress):
    terminal_size = shutil.get_terminal_size()
    bar_width = terminal_size.columns - 10

    filled_width = int(progress * bar_width)
    bar = '█' * filled_width + '-' * (bar_width - filled_width)
    print(f"[{bar}] {progress*100:.2f}%")

# 사용 예시
draw_progress_bar(0.75)

위의 예제에서는 draw_progress_bar() 함수를 정의하여 프로그래스 바를 그리고 있습니다. shutil.get_terminal_size() 함수를 사용하여 터미널 창의 너비를 가져온 후, 프로그래스 바의 길이를 설정합니다.

결론

shutil.get_terminal_size() 함수는 터미널의 크기를 가져오는 데 사용되며, 터미널 기반 애플리케이션 및 텍스트 출력 작업에서 유용하게 활용될 수 있습니다. 이 함수를 사용하여 터미널 창의 크기에 따라 동적으로 동작하는 애플리케이션을 개발할 수 있습니다.