폴더 크기 측정하기
폴더의 크기를 측정하고 그 결과를 JSON 파일로 저장합니다. 홈 디렉터리를 기준 경로로 하기 때문에 실행 완료까지 시간이 걸릴 수 있습니다.
비주얼 스튜디오 코드에서 새로운 파일을 생성한 뒤 파일 명을 'step_2_4.py'로 변경합니다. 다음 코드를 입력한 뒤, 대화명 창에서 실행하면 'output' 폴더에 'step_2_4.json' 파일이 결과로 생성됩니다. 비주얼 스튜디오 코드에서 이 파일을 열면 폴더의 크기를 바이트 단위로 볼 수 있습니다.
import json
from pathlib import Path
from step_2_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니다.
from step_2_2 import get_total_filesize
from step_2_3 import load_dirnames
OUT_2_4 = OUT_DIR / f"{Path(__file__).stem}.json"
def dump_file_from_dirnames(): # 9
dirs = load_dirnames() # 10
result = {} # 11
for path_str in dirs: # 12
path = Path(path_str) # 13
filesize = get_total_filesize(path, pattern="**/*") # 14
result[path.as_posix()] = filesize # 15
with open(OUT_2_4, "w", encoding="utf-8") as fp:
json.dump(result, fp, ensure_ascii=False, indent=2)
def load_filesize_per_dir() -> dict[str, int]: # 19
if OUT_2_4.is_file():
with open(OUT_2_4, encoding="utf-8") as fp:
return json.load(fp)
return {}
if __name__ == "__main__":
dump_file_from_dirnames() # 26
[실행 결과]
{
"C:/Users/zzang/!!!#1(3965675)": 1048576,
"C:/Users/zzang/.cache": 47,
"C:/Users/zzang/.cf": 3599,
"C:/Users/zzang/.codetogether": 170,
"C:/Users/zzang/.config": 113,
"C:/Users/zzang/.cursor": 2,
"C:/Users/zzang/.docker": 685808,
"C:/Users/zzang/.eclipse": 175,
"C:/Users/zzang/.gradle": 2,
"C:/Users/zzang/.idlerc": 0,
"C:/Users/zzang/.ipython": 371,
"C:/Users/zzang/.m2": 202,
"C:/Users/zzang/.p2": 20747,
"C:/Users/zzang/.skiko": 17315328,
"C:/Users/zzang/.vscode": 35426,
"C:/Users/zzang/.webclipse": 372080,
"C:/Users/zzang/AndroidStudioProjects": 0,
"C:/Users/zzang/AppData": 0,
"C:/Users/zzang/Application Data": 0,
"C:/Users/zzang/Contacts": 412,
"C:/Users/zzang/Cookies": 0,
"C:/Users/zzang/Documents": 43982336,
"C:/Users/zzang/Downloads": 3146,
"C:/Users/zzang/Favorites": 80,
"C:/Users/zzang/IntelGraphicsProfiles": 8436,
"C:/Users/zzang/Links": 902,
"C:/Users/zzang/Local Settings": 0,
"C:/Users/zzang/Mendix": 149,
"C:/Users/zzang/Music": 5078341,
"C:/Users/zzang/My Documents": 0,
"C:/Users/zzang/NetHood": 0,
"C:/Users/zzang/OneDrive": 387,
"C:/Users/zzang/Oracle": 3867,
"C:/Users/zzang/Postman": 0,
"C:/Users/zzang/PrintHood": 0,
"C:/Users/zzang/Recent": 0,
"C:/Users/zzang/Saved Games": 282,
"C:/Users/zzang/Searches": 852,
"C:/Users/zzang/SendTo": 0,
"C:/Users/zzang/Templates": 0,
"C:/Users/zzang/Videos": 1213959679,
"C:/Users/zzang/source": 0,
"C:/Users/zzang/workspace": 1865,
"C:/Users/zzang/시작 메뉴": 0
}
09 이전 단계에서 생성된 JSON 형식의 폴더 목록 파일을 불러와 폴더별로 파일 크기를 측정하고, 그 결과를 JSON 형식으로 OUT_2_4 경로에 저장하는 함수 dump_filesize_from_dirnames()를 정의합니다.
10 함수 load_dirnames()를 사용하여 폴더 목록을 불러와서 변수 dirs에 저장합니다.
11 딕셔너리result를 생성합니다. result에는 폴더 경로와 크기를 각각 키와 쌍으로 저장합니다.
12 dirs에 있는 폴더에 대해 반복 작업을 수행합니다.
13 path_str에 저장된 폴더 경로 문자열을 Path 객체로 변환하고 변수 path에 저장합니다.
14 변수 filesize에 폴더의 크기를 저장합니다. 이때 매개변수 pattern에 글로브 패턴 '**/*"에 전달해서 하위 폴더를 포함하여 모든 파일을 검색하도록 저장합니다.
19 OUT_2_4 경로에 저장된 폴더별 파일 크기 파일을 불러와서 딕셔너리로 반환하는 함수 load_filesize_per_dir()를 정의합니다.
26 dump_filesize_from_dirnames() 함수를 호출하여 홈 디렉터리 하위 폴더의 크기를 측정합니다.
'프로그래밍 언어 > Python' 카테고리의 다른 글
| 데이터 시각화 첫걸음 떼기 (0) | 2025.10.15 |
|---|---|
| 데이터 시각화하기 - 데이터 전처리하기 (0) | 2025.10.12 |
| 측정할 폴더 목록 저장하기 (0) | 2025.10.06 |
| 폴더 크기 측정 함수 만들기 (0) | 2025.10.03 |
| 폴더 크기 측정 프로그램 - 작업 폴더 생성하기 (0) | 2025.09.30 |