Python에서 디렉터리의 전체 크기를 구하려면 해당 디렉터리 트리를 모두 순회하면서 각 파일의 크기를 더해야 합니다. 이를 위해 os.walk() 함수와 os.path.getsize() 함수를 함께 사용할 수 있습니다.
방법 1: os.walk()와 os.path.getsize() 사용하기
os.walk()는 시작 경로부터 하위 디렉터리까지 재귀적으로 탐색하며, 각 위치에서 파일 목록을 반환합니다. 여기에 os.path.getsize()로 파일 크기를 가져와 합산하면 디렉터리 전체 크기를 계산할 수 있습니다.
예제 코드
import os
total_size = 0
start_path = '.' # 현재 디렉터리의 크기를 구하는 경우
for path, dirs, files in os.walk(start_path):
for f in files:
fp = os.path.join(path, f)
total_size += os.path.getsize(fp)
print("Directory size: " + str(total_size))방법 2: subprocess로 du 명령어 호출하기 (*NIX 전용)
Linux나 macOS 같은 *NIX 계열 운영체제를 사용하고 있다면, subprocess 모듈을 통해 du 명령어를 호출하는 방법이 훨씬 간단합니다. du -sh 옵션은 지정한 경로의 전체 사용량을 사람이 읽기 쉬운 형태로 요약해서 보여줍니다.
예제 코드
import subprocess
path = '.'
size = subprocess.check_output(['du', '-sh', path]).split()[0].decode('utf-8')
print("Directory size: " + size)실행 결과
두 프로그램 중 어느 것을 실행하든 아래와 같은 출력 결과를 얻을 수 있습니다.
Directory size: 1524664
참고 사항
첫 번째 방법은 운영체제에 관계없이 동작하기 때문에 Windows 환경에서도 사용할 수 있다는 장점이 있습니다. 반면 두 번째 방법은 *NIX 시스템에서만 동작하지만, 코드가 간결하고 실행 속도가 빠릅니다. 상황에 맞게 적절한 방법을 선택하시기 바랍니다.