폴더 크기 측정 함수 만들기
✅타입 힌트
파이썬은 하나의 변수에 서로 다른 타입의 데이터를 저장할 수 있습니다. 이러한 언어적 특성은 코드를 편리하고 빠르게 작성할 수 있도록 도와주지만, 반대로 코드가 복잡해질수록 오류가 발생할 위험을 증가시킵니다. 이러한 문제를 해결하기 위해 변수에 저장되는 데이터 타입을 사전에 지정할 수 있는데, 이를 타입 힌트(type hint)라고 합니다.
타입 힌트는 변수명 오른쪽에 클론(;)과 함께 그 변수에 저장할 데이터 타입을 적으면 됩니다. 예를 들면, 변수 x를 정수 타입으로, 변수 y를 문자열 타입으로 지정하는 코드는 다음과 같습니다.
x: int = 323
print(x)
y: str = "Hello, World!"
print(y)
함수에도 타입 힌트를 적용할 수 있습니다. 다음은 Path 객체를 입력받아 장수를 반환하는 함수 get_size()에 타입 힌트를 적용한 코드입니다.
def get_size(path: Path) -> int;
pass
좋은 코드, 즉 유지 보수와 확장이 쉬운 프로그램을 만들기 위해서는 기능별로 모듈을 분리하는 것이 좋습니다.
비주얼 스튜디오 코드에서 새로운 파일을 생성하고, 파일명을 'step_2_2.py'로 변경합니다. 다음과 같이 코드를 입력한 뒤, 대화형 창에서 실행하면 'WORK_DIR' 폴더의 파일 크기를 바이트 단위로 출력합니다.
from pathlib import Path
from step_2_1 import WORK_DIR # 이전에 작성한 모듈을 불러옵니다.
def get_total_filesize(base_dir: Path, pattern: str = "*") -> int: # ➍
total_bytes = 0 # ➎
for fullpath in base_dir.glob(pattern): # ➏
if fullpath.is_file(): # ➐
total_bytes = fullpath.stat().st_size # ➑
return total_bytes # ➒
if __name__ == "__main__": # 11
base_dir = WORK_DIR # 12
filesize = get_total_filesize(base_dir, pattern="*") # 13
print(f"{base_dir.as_posix()=}, {filesize=} bytes") # 14
04 함수 get_total_filesize()를 정의합니다. 매개변수 base_dir은 Path 객체를, pattern은 글로프 패턴 문자열을 저장합니다.
05 변수 total_bytes를 초기화합니다. 이 변수에는 파일 크기를 저장헐 것입니다.
06 함수 glob()는 입력값으로 전달된 글로브 패턴과 일치하는 파일명을 리스트로 반환합니다.
07 if 조건문과 is_file() 함수를 사용하여 파일이 유효한지 검사합니다. 파일이 존재하면 코드 8행을 실행합니다.
08 변수 total_bytes에 파일의 크기를 바이트 단위로 더합니다.
09 total_bytes를 반환합니다.
11 소스 코드 최초 실행 시 12~14행 폴더를 수행합니다.
12 변수 base_dir에 현재 작업중인 폴더 경로를 저장합니다.
13 함수 get_total_filesize()를 호출하고, 그 결괏값을 filesize에 저장합니다.
14 폴더 크기를 화면에 출력합니다. 함수 as_posix()는 base_dir에 저장된 Path 객체를 문자열로 반환합니다.
여기서 잠깐 글로브 패턴
글로프 패턴(glob pattern)이런 와일드카드(wild card) 문자를 활용하여 특정 조건을 만족하는 파일의 집합을 표현한 것입니다. 가장 흔한 와일드카드 문자는 별표(*)로, 모든 문자를 의미합니다. 예를 들어, "*"는 모든 파일을, "*.py"는 .py호 끝나는 모든 파일을 의미합니다.
슬래스(/)를 사용하면 경로를 패턴 "**"는 하위 폴더를 재귀적으로 검색할 때 쓰이는데, "**/*"라고 쓰면 현재 경로와 모든 하위 경로를 의미합니다. "**/*.txt"는 현재 경로와 하위 경로에서 .txt로 끝나는 모든 파일을 의미합니다.
'프로그래밍 언어 > Python' 카테고리의 다른 글
| 폴더 크기 측정하기 (0) | 2025.10.09 |
|---|---|
| 측정할 폴더 목록 저장하기 (0) | 2025.10.06 |
| 폴더 크기 측정 프로그램 - 작업 폴더 생성하기 (0) | 2025.09.30 |
| 소스 코딩 작성하기 & 대화형 프로그래밍 (0) | 2025.09.30 |
| 파이썬 가상 환경 설치 (0) | 2025.09.27 |