측정할 폴더 목록 저장하기
크기를 측정하고자 하는 폴더를 선별하여 리스트로 저장하면 모든 폴더의 크기를 측정하지 않아도 됩니다.
새로운 파일을 생성하고 파일명을 'step_2_3.py'로 변경하세요. 다음 코드를 입력한 뒤 실행하면 'output' 폴더에 'step_2_3.json' 파일이 생성됩니다. 비주얼 스튜디오 코드에서 이 파일을 열면 홈 디렉터리의 하위 폴더 목록을 볼 수 있습니다.
import json
from pathlib import Path
from step_2_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니더.
OUT_2_3 = OUT_DIR / f"{Path(__file__).stem}.json" # 5
def dump_dirnames(base_dir: Path) -> None: # 7
dirs = [] # 8
for path in base_dir.iterdir(): # 9
if path.is_dir(): # 10
dirs.append(path.as_posix()) # 11
dirs_sorted = sorted(dirs) # 12
with open (OUT_2_3, "w", encoding="utf-8") as fp: # 13
json.dump(dirs_sorted, fp, ensure_ascii=False, indent=2) # 14
def load_dirnames() -> list[str]: # 16
if OUT_2_3.is_file(): # 17
with open(OUT_2_3, encoding="utf-8") as fp: # 18
return json.load(fp) # 19
return [] # 20
if __name__ == "__main__":
dump_dirnames(Path.home()) # 23
[실행결과]
[
"C:/Users/zzang/!!!#1(3965675)",
"C:/Users/zzang/.cache",
"C:/Users/zzang/.cf",
"C:/Users/zzang/.codetogether",
"C:/Users/zzang/.config",
"C:/Users/zzang/.cursor",
"C:/Users/zzang/.docker",
"C:/Users/zzang/.eclipse",
"C:/Users/zzang/.gradle",
"C:/Users/zzang/.idlerc",
"C:/Users/zzang/.ipython",
"C:/Users/zzang/.m2",
"C:/Users/zzang/.p2",
"C:/Users/zzang/.skiko",
"C:/Users/zzang/.vscode",
"C:/Users/zzang/.webclipse",
"C:/Users/zzang/AndroidStudioProjects",
"C:/Users/zzang/AppData",
"C:/Users/zzang/Application Data",
"C:/Users/zzang/Contacts",
"C:/Users/zzang/Cookies",
"C:/Users/zzang/Documents",
"C:/Users/zzang/Downloads",
"C:/Users/zzang/Favorites",
"C:/Users/zzang/IntelGraphicsProfiles",
"C:/Users/zzang/Links",
"C:/Users/zzang/Local Settings",
"C:/Users/zzang/Mendix",
"C:/Users/zzang/Music",
"C:/Users/zzang/My Documents",
"C:/Users/zzang/NetHood",
"C:/Users/zzang/OneDrive",
"C:/Users/zzang/Oracle",
"C:/Users/zzang/Postman",
"C:/Users/zzang/PrintHood",
"C:/Users/zzang/Recent",
"C:/Users/zzang/Saved Games",
"C:/Users/zzang/Searches",
"C:/Users/zzang/SendTo",
"C:/Users/zzang/Templates",
"C:/Users/zzang/Videos",
"C:/Users/zzang/source",
"C:/Users/zzang/workspace",
"C:/Users/zzang/시작 메뉴"
]
05 출력 파일 경로를 만들고 변수 OUT_2_3에 저장합니다.
07 폴더 목록을 저장하는 함수 dump_dirnames()를 정의합니다. 매개변수 base_bir는 폴더 경로를 저장합니다.
08 하위 폴더 목록을 저장할 리스트 dirs를 초기화합니다.
09 base_dir 경로에 있는 모든 파일을 반복 처리합니다. 함수 iterdir()는 주어진 폴더의 모든 파일과 하위 폴더 목록을 반환합니다.
10 path 변수에 저장된 경로가 유효하면 코드 11행을 실행합니다.
11 dirs 리스트에 폴거 경로를 추가합니다. 이 코드는 폴더 경로를 텍스트 파일로 저장하므로, 함수 as_posix()를 사용하여 path 객체를 문자열로 반환합니다.
12 함수 sorted()를 사용하여 dirs 리스트를 오름차순 정렬합니다.
13 OUT_2_3 경로에 쓰기 모드로 파일을 열고, 이를 변수 fp에 저장합니다.
14 json 패키지의 함수 dump()를 사용하여 dirs_sorted에 저장된 폴더 목록을 JSON 형식의 문자열로 저장합니다.
16 폴더 목록 이 저장된 JSON 파일을 불러오는 함수 load_dirnames()를 정의합니다.
17 OUT_2_3 경로에 파일이 있는지 확인합니다.
18 OUT_2_3 경로에 있는 파일을 불러옵니다.
19 json 패키지의 함수 load()를 사용하여 JSON 형식으로 저장된 파일을 불러와서 파이썬 데이터 타입으로 변환한 후, 그 결과를 반환합니다.
20 파일이 없으면 빈 리스트를 반환합니다.
23 함수 dump_dirames()를 실행합니다. 이때 함수 home()을 사용해 홈 디렉터리의 경로를 입력값으로 전달합니다.
'프로그래밍 언어 > Python' 카테고리의 다른 글
| 데이터 시각화하기 - 데이터 전처리하기 (0) | 2025.10.12 |
|---|---|
| 폴더 크기 측정하기 (0) | 2025.10.09 |
| 폴더 크기 측정 함수 만들기 (0) | 2025.10.03 |
| 폴더 크기 측정 프로그램 - 작업 폴더 생성하기 (0) | 2025.09.30 |
| 소스 코딩 작성하기 & 대화형 프로그래밍 (0) | 2025.09.30 |